在 Java 中,你可以使用 Apache POI 库来读取 Excel 电子表格的单元格数据。以下是一个简单的示例,演示如何使用 Apache POI 读取 Excel 单元格数据:
在你的 Maven 项目的 pom.xml
文件中添加以下依赖项:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
以下是一个简单的 Java 代码示例,演示如何从 Excel 电子表格中获取单元格数据:
import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
public static void main(String[] args) {
try {
readExcel("example.xlsx");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void readExcel(String filePath) throws IOException {
FileInputStream fileInputStream = new FileInputStream(new File(filePath));
// 根据文件后缀(xls/xlsx)进行判断
Workbook workbook;
if (filePath.endsWith(".xls")) {
workbook = new HSSFWorkbook(fileInputStream);
} else if (filePath.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(fileInputStream);
} else {
throw new IllegalArgumentException("Not a valid Excel file");
}
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 遍历行
for (Row row : sheet) {
// 遍历单元格
for (Cell cell : row) {
// 获取单元格内容
String cellValue = getCellValue(cell);
System.out.print(cellValue + "\t");
}
System.out.println();
}
// 关闭 workbook 和文件流
workbook.close();
fileInputStream.close();
}
public static String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
return String.valueOf(cell.getNumericCellValue());
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
default:
return "";
}
}
}
在这个示例中,readExcel
方法打开 Excel 文件,获取第一个工作表,并遍历所有行和单元格。getCellValue
方法用于获取单元格的值,不同类型的单元格采用不同的处理方式。请根据实际需求进行适当的调整。
继续讨论从 Excel 电子表格中获取单元格数据的 Java API,以下是一些可能的额外信息:
日期格式处理:
如果单元格包含日期值,可以通过检查单元格的日期格式进行处理。在 getCellValue
方法中,你可以添加处理日期格式的逻辑。例如:
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().toString();
} else {
return String.valueOf(cell.getNumericCellValue());
}
处理合并单元格:
如果你的 Excel 表格包含合并单元格,可以使用 sheet.getMergedRegion(int index)
来获取合并单元格的区域。然后,你可以根据合并单元格的起始行和列,以及当前行和列的关系来确定是否需要显示相同的数据。以下是一个简单的示例:
// 获取所有合并单元格区域
for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
CellRangeAddress region = sheet.getMergedRegion(i);
int mergedStartRow = region.getFirstRow();
int mergedEndRow = region.getLastRow();
int mergedStartCol = region.getFirstColumn();
int mergedEndCol = region.getLastColumn();
// 检查当前单元格是否在合并单元格区域内
if (row.getRowNum() >= mergedStartRow && row.getRowNum() <= mergedEndRow
&& cell.getColumnIndex() >= mergedStartCol && cell.getColumnIndex() <= mergedEndCol) {
// 处理合并单元格数据
// 你可以在这里返回合并单元格的值
}
}
错误处理:
在实际应用中,你可能需要添加更多的错误处理逻辑,以确保对于不同类型的 Excel 文件都能正确处理。例如,可以添加对工作表是否存在、单元格是否为空等的检查。
请根据实际需求和你的 Excel 文件格式进行适当的调整。希望这些信息能够帮助你成功读取 Excel 电子表格中的数据。
原文链接:codingdict.net