当前位置: 首页 > 知识库问答 >
问题:

使用apache poi修改现有excel

文心思
2023-03-14

当我修改服务器中现有的excel文件并复制到本地计算机并打开它时,我发现excel无法打开,因为某些内容不可读,是否要打开并修复此工作簿

File f = new File(directory+"users.xlsx");
FileInputStream fileInputStream = new FileInputStream(f);

workbook = new XSSFWorkbook(fileInputStream);
sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(4);
for(int i = 0; i<5; i++)
{
Cell cell = row1.getCell(i);
cell.setCellValue(formattedDate);
cell.setCellStyle(normalStyle);
}

 FileOutputStream out = new FileOutputStream(f, false);
               workbook.write(out);
               out.close();

已经努力解决了8个小时,但运气不好。如果有人能解释一下,我会很感激的。

共有1个答案

钦良弼
2023-03-14

将输出移到另一个文件,不要忘记关闭输入和输出并使用此选项http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html

File f = new File(directory+"users.xlsx");

FileInputStream fileInputStream = new FileInputStream(f);

Workbook workbook = WorkbookFactory.create(fileInputStream);
fileInputStream.close();
sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(4);
for(int i = 0; i<5; i++)
{
Cell cell = row1.getCell(i);
cell.setCellValue(formattedDate);
cell.setCellStyle(normalStyle);
}

 FileOutputStream out = new FileOutputStream(f, false);
               workbook.write(out);
               out.close();
 类似资料:
  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 问题内容: 我想替换第二行的文件内容,请根据以下文件格式和侦听器方法来帮助您。 第二行很长,要替换为。 问题答案: 如对类似问题的公认答案中所建议: 同时以写入模式打开一个临时文件,对于每一行,读取它,必要时进行修改,然后写入该临时文件。最后,删除原始文件并重命名临时文件。 根据您的实现,类似于以下内容:

  • 我已经编写了用于编写xlsm(Excel2007)的java文件。 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错。 使用ApachePOI库编写xlsm文件可行吗? 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南。 谢谢

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 我有一个我搜索的对象,该对象存储在一个流中。我想让用户能够修改现有流中的元素,并用修改后的元素更新现有列表,而不是创建一个新的列表。这个问题与这个问题相似,只是用户正在将修改后的元素添加到一个新的列表中 项目类别

  • 我在docker中创建了一个图像。安装了Ubuntu、JDK和其他几个库。然后我退出了容器并进行了这样的提交 我又启动了容器 这次我安装了gradle和其他几个库。然后退出容器,再次提交。 每次我执行提交操作时,都会创建一个新图像,并保留带有存储库和标记的旧图像。按照这个工作流程,我很快就会用完空间。这是使用docker的正确方法吗?如何确保所有这些图像都消失。 我正在windows 10上使用d