我对Java和如何向现有的Excel表格中编写/操作现有数据感兴趣,希望能够学习更多。我想知道如何使用jxl api / Apache POI编辑现有的Excel文件并保存它,或者您能否给我一个示例程序,演示如何在现有Excel文件中编辑一些数据,然后保存它。
这里的教程非常有帮助且写得很好。它们使用了Apache POI项目开发的外部JAR文件。
这是一个简单的编辑单元格的示例:
InputStream inp = new FileInputStream("wb.xls");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt([sheet index]);
Row row = sheet.getRow([row index]);
Cell cell = row.getCell([cell index]);
String cellContents = cell.getStringCellValue();
//Modify the cellContents here
// Write the output to a file
cell.setCellValue(cellContents);
FileOutputStream fileOut = new FileOutputStream("wb.xls");
wb.write(fileOut);
fileOut.close();
我从曲折的经历中学到的一个非常重要的技巧是,只有在完成对Excel工作簿的写入后才打开OutputStream。Zabbala的示例很好地展示了这一点。如果您在更早的时候打开OutputStream,那么当程序退出时您的更改将不会被写入文件,您会像我一样感到困惑。
我使用以下语句来在另一个选项卡中刷新公式:
HSSFSheet worksheetse = workbook.getSheetAt(0);
worksheetse.setForceFormulaRecalculation(true);
但是必须对所有具有公式的选项卡应用setForceFormulaRecalculation方法。
抱歉我的英语不好。
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook)
可能无法正常工作。但在这种情况下,worksheetse.setForceFormulaRecalculation(true)
似乎可行。 - Vasilen DonchevHSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
会失败吗? - SpringLearner你好,我和neXGen遇到了相同的问题。但是奇怪的是,如果我使用openoffice打开文件,它可以正常工作!
编辑:也许我找到了一个解决方案,在更改值后添加以下内容:
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);