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

如何打开现有的*。xlsx文件,进行修改,然后另存为新文件(保留原始文件不变?)

都博裕
2023-03-14

我需要打开一个现有的*。xlsx Excel文件,进行一些修改,然后将其另存为新文件(或将其流式传输到前端而不保存)。原始文件必须保持不变。

出于内存原因,我避免使用FileInputStream(如下所述:http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream )

// XSSFWorkbook, File
OPCPackage pkg = OPCPackage.open(new File("file.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(pkg);
....
pkg.close();

共有3个答案

蓬弘
2023-03-14

这是我最后的解决方案,我最终使用了它。这样做的好处是,任何地方都不会保存任何文件。我还添加了以下行:

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);

这将确保更新所有公式。再一次,我完成了所有的尝试/捕获/最终。

OPCPackage pkg = OPCPackage.open("existingFile.xlsx");
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(pkg);

// make your modifications... 
XSSFSheet sheet = wb.getSheetAt(0);
//
XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
ByteArrayOutputStream os = new ByteArrayOutputStream();
wb.write(os);
pkg.close();
os.close();
Faces.sendFile(os.toByteArray(), "file.xlsx", true);

为了使其正常工作,必须为输入和输出使用不同的文件路径。

最后一行使用Omnifaces将文件发送到浏览器。

郗学
2023-03-14

下面是如何使用OPCPackage读取(尝试/捕获/最后省略的可读性)时可以做到这一点:

OPCPackage pkg = OPCPackage.open("existingFile.xlsx");
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(pkg);


make your modifications... XSSFSheet sheet = wb.getSheetAt(0); ...
fos = new FileOutputStream("outputFileName.xlsx");
wb.write(fos);
pkg.close();
fos.close();
Faces.sendFile(new File(outputFileName)

为了使其正常工作,必须为输入和输出使用不同的文件路径。

最后一行使用Omnifaces将文件发送到浏览器。

有关更多信息,请参见此问题:在此处输入链接说明

商风华
2023-03-14
JFileChooser fileOpen = new JFileChooser();
fileOpen.showOpenDialog(theFrame); // gives you an open file dialog
readFile(fileOpen.getSelectedFile()); // write you reading content in reaFile method

JFileChooser fileSave = new JFileChooser();
fileSave.showSaveDialog(Frame); //gives you a dialog box for saving 
saveFile(fileSave.getSelectedFile()); // write your saving content in saveFile method
 类似资料:
  • 我想下载一个文件,同时保留文件的文件名。 我有: 我可以下载文件,但我下载的文件名总是“downloadFile”。pdf或下载文件。巴布亚新几内亚'。 如何保留原始文件名?谢谢

  • 我正试图用reactJS下载一个xlsx文件,但当我在下载后试图打开我的文件时,我收到了这条消息: “Excel无法打开文件‘file.xlsx’,因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。” 这是前端代码: 为什么我得到这个错误?请谁来帮帮我,我被困在这个3周 [编辑1] 我尝试下载的文件是在后端构建的,基本上我获取数据库上的值并使用Apache po

  • 问题内容: 我正在尝试使用Python 2.7.1(在Windows上,fyi)从zip文件中提取文件,而我的每一次尝试都显示了具有Modified Date =提取时间的提取文件(不正确)。 我也尝试使用.extractall方法,结果相同。 谁能告诉我我在做什么错? 我想认为这是可能的,而不必重新校正每个[Windows文件的文件创建日期?](http://codingdict.com/que

  • 问题内容: 我想我的调用或当我指定一个文件被修改浏览器。修改文件后,我该如何“观看”该文件以执行某些操作? 以编程方式看来,这些步骤是..基本上每秒设置一个永无休止的间隔,并缓存初始修改日期,然后每当更改一次调用X时便比较该日期。 问题答案: 如前所述,您可以使用pyinotify: 例如: 这比轮询更有效。内核会告诉您何时进行操作,而无需您不断询问。

  • 我试图在一个特定文件夹中保存多个图像第一个图像保存正确,但下一个图像只是替换第一个图像。如何保存多个图像?如何动态命名并使用相同的名称保存图像,但使用不同的扩展名,如image、image1、image2。。。下面是我的代码

  • 我有一个这样的bat文件: 这会将IP信息打印到屏幕上,但在用户可以读取该信息之前,CMD会自动关闭。 我相信CMD假设脚本已经完成,所以它关闭了。 脚本完成后如何保持CMD打开?