我正在使用apache poi包创建一个数字电子表格,它代表一个形状(区域,周长,质心)的特征。问题是我有一个方法:writeDatabase()输出形状的功能,输出电子表格如下所示: http://s23.postimg.org/hqsfg76jv/Capture.png
所有这些数字都需要在同一行,然后需要为下一条记录采用新行。 writeDatabase方法如下所示
public static void writeDatabase(int value, int cellNum){
try {
Cell cell1=null;
FileInputStream file = new FileInputStream(new File("features.xls"));
Workbook workbook = new HSSFWorkbook(file);
Sheet sheet = workbook.getSheetAt(0);
int lastRow = sheet.getPhysicalNumberOfRows();
cell1 = sheet.createRow(lastRow).createCell(cellNum);
cell1.setCellValue(value);
FileOutputStream outFile =new FileOutputStream(new File("features.xls"));
workbook.write(outFile);
outFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我认为问题在于每次调用此行,但我无法想到另一种选择: int lastRow = sheet.getPhysicalNumberOfRows();
有什么想法吗?
答案 0 :(得分:0)
您需要提供一些关于是否应该启动新行的指示(除非您可以告诉新行只是因为cellNum为0而启动?)
然后,您可以创建新行,也可以使用现有行:
int lastRow = sheet.getPhysicalNumberOfRows();
Row row;
if (startNewRow) {
row = sheet.createRow(lastRow);
} else {
row = sheet.getRow(lastRow - 1);
}
cell1 = row.createCell(cellNum);
cell1.setCellValue(value);
可能会根据startNewRow
设置cellNum
,或者可能是传递到writeDatabase
的其他参数,以适当者为准。