在 Java 中,你可以使用 Apache POI 库来读取 Excel 电子表格的单元格数据。以下是一个简单的示例,演示如何使用 Apache POI 读取 Excel 单元格数据:
在你的 Maven 项目的 pom.xml 文件中添加以下依赖项:
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 方法用于获取单元格的值,不同类型的单元格采用不同的处理方式。请根据实际需求进行适当的调整。
readExcel
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) 来获取合并单元格的区域。然后,你可以根据合并单元格的起始行和列,以及当前行和列的关系来确定是否需要显示相同的数据。以下是一个简单的示例:
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