问题描述
所以我想将我写到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",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()。