Java Apache POI:复制Excel工作表时间列及格式
使用Java Apache POI复制Excel工作表时间列并保留格式
本篇博客文章将指导您使用Java和Apache POI库,将Excel工作表中的时间列复制到另一个工作表,并完整保留时间值和单元格格式。
以下代码段展示了如何实现此目标:java// 假设 'sheet' 是源工作表 (P1), 'newDataSheet' 是目标工作表 (P1-1)
for (int i = 0; i <= sheet.getLastRowNum(); i++) { Row p1Row = sheet.getRow(i); // 获取P1工作表的行对象 Row p1_1Row = newDataSheet.getRow(i); // 获取P1-1工作表的行对象 if (p1Row != null && p1_1Row != null) { Cell p1DateCell = p1Row.getCell(0); // 获取P1工作表的时间单元格 Cell p1_1DateCell = p1_1Row.createCell(0); // 创建P1-1工作表的时间单元格 if (p1DateCell != null && p1DateCell.getCellType() == CellType.NUMERIC) { p1_1DateCell.setCellValue(p1DateCell.getDateCellValue()); // 将P1工作表的时间值复制到P1-1工作表的时间单元格 // 复制时间单元格的样式 CellStyle p1DateCellStyle = p1DateCell.getCellStyle(); CellStyle p1_1DateCellStyle = workbook.createCellStyle(); p1_1DateCellStyle.cloneStyleFrom(p1DateCellStyle); p1_1DateCell.setCellStyle(p1_1DateCellStyle); } }}
代码解释:
- 循环遍历行: 代码首先使用
for循环遍历源工作表 (sheet) 中的每一行。2. 获取行对象: 在循环的每次迭代中,代码使用getRow(i)方法获取源工作表和目标工作表中对应索引i的行对象。3. 检查空行: 代码使用if语句检查获取的行对象是否为空,以避免NullPointerException。4. 获取和创建单元格: 如果两行都不为空,则代码获取源工作表中索引为0(时间列)的单元格,并在目标工作表的相同位置创建一个新的单元格。5. 复制时间值和格式: 代码检查时间单元格是否为空以及其类型是否为NUMERIC(因为日期和时间在Excel中存储为数字)。如果是,则代码使用getDateCellValue()方法获取时间值,并使用setCellValue()方法将其复制到目标单元格。6. 复制单元格样式: 为了保持格式一致性,代码还复制了源时间单元格的样式,并将其应用于目标单元格。
总结:
这段代码简洁有效地展示了如何使用Java Apache POI库复制Excel工作表中的时间列,并同时保留时间值和单元格格式。通过理解这段代码,您可以轻松地将其应用到您的项目中,并根据需要进行修改。
原文地址: https://www.cveoy.top/t/topic/fQDo 著作权归作者所有。请勿转载和采集!