[英]Apache-POI/ Java/ leaving out rows when writing to an Excel file
所以我想把一些数字加在一起,我写到一个 Excel 文件中。 在文件的末尾我想写结果,但我的问题是,每次我创建 Excel 文件时,我可以写两行,但第二行被跳过,所以什么都没有写进去。 在第三排之后,一切都继续运行良好。 我试图自己解决它,但不幸的是我无法进一步解决。
这是我写入 ExelFile 的代码:
try {
boolean fileExists = new File("Stundenabrechnung" + test + ".xlsx").exists();
XSSFWorkbook workbook;
XSSFSheet sheet;
if (fileExists) {
workbook = new XSSFWorkbook(new FileInputStream(new File("Stundenabrechnung" + test + ".xlsx")));
sheet = workbook.getSheetAt(0);
Map<String, Object[]> data = new TreeMap<>();
data.put("3", new Object[]{datum, ergebnis + "0", LHabg.getText(), über, taBes.getText()});
Set<String> keyset = data.keySet();
int rownum = sheet.getPhysicalNumberOfRows();
for (String key : keyset) {
XSSFRow row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
XSSFCell cell = row.createCell(cellnum++);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.TOP);
cell.setCellStyle(cellStyle);
if (obj instanceof String) {
cell.setCellValue((String) obj);
} else if (obj instanceof Integer) {
cell.setCellValue((Integer) obj);
}
}
}
} else {
workbook = new XSSFWorkbook();
sheet = workbook.createSheet("Stundenabrechnung");
sheet.setDefaultColumnWidth(18);
Map<String, Object[]> data = new TreeMap<>();
data.put("1", new Object[]{"DATUM:", " INS. ABG. STUNDEN:", " ABGR. STUNDEN:", "ÜBERSTUNDEN:", " BESCHREIBUNG:"});
data.put("2", new Object[]{datum, ergebnis + "0", LHabg.getText(), Lueber.getText(), taBes.getText()});
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
XSSFRow row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
XSSFCell cell = row.createCell(cellnum++);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.TOP);
cell.setCellStyle(cellStyle);
if (obj instanceof String) {
cell.setCellValue((String) obj);
} else if (obj instanceof Integer) {
cell.setCellValue((Integer) obj);
}
}
}
FileOutputStream outputStream = new FileOutputStream("Stundenabrechnung" + test + ".xlsx");
workbook.write(outputStream);
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ExcelFile is created succsessfully");
这是结果的代码:
XSSFRow rowTotal = sheet.createRow(24);
XSSFCell totalText = rowTotal.createCell(2);
totalText.setCellValue("Überstunden:");
XSSFCell totalValue = rowTotal.createCell(3);
totalValue.setCellFormula("SUM(D2:D20)");
我尝试将 ResultCode 放入 if-else 语句中,但没有成功。
我希望有人可以帮助我,因为这是我必须解决的最后一个问题。 之后我的程序就完成了。
谢谢!!!
我认为您从第 3 行开始尝试从 getPhysicalNumberOfRows() 更改 getLastRowNum()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.