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

POI XSSFWorkbook克隆/复制/复制

董翰池
2023-03-14

我想在POI中使用OPCPackage和XSSFWorkbook打开一个excel文件。由于这个文件将在不同的线程中使用,我想避免重新打开该文件以节省时间(POI在打开一个xlsx文件时速度较慢)。所以我所做的是将工作簿保存在一个全局变量中,然后线程将访问这个全局变量并重用对象。

我遇到的问题是当我尝试重用对象时,它影响/修改了excel文件的原始数据。

OPCPackage pkg = OPCPackage.open(new File("c:/sample.xlsx"));
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(pkg);

共有1个答案

许寒
2023-03-14

我有一个类似的练习,我的解决方案是使用WorkbookFactory类的Create方法,从源文件中向它传递一个InputStream对象。是下一个:

InputStream inputStream = new FileInputStream (origin_file)
XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create (inputStream)
XSSFSheet sheet = wb.getSheet (sheet)
...
FileOutputStream file = new FileOutputStream ("new_file.xlsx")
wb.write (file)
file.close ()
 类似资料:
  • 问题内容: 您能告诉我Java克隆是什么意思吗?什么是深层复制和浅层复制,请举例说明 问题答案: 我强烈建议阅读有效的Java第二版中的第11项

  • 问题 你想复制一个对象,包含其所有子对象。 解决方案 clone = (obj) -> if not obj? or typeof obj isnt 'object' return obj if obj instanceof Date return new Date(obj.getTime()) if obj instanceof RegExp flags

  • 本文向大家介绍浅析C#的复制和克隆,包括了浅析C#的复制和克隆的使用技巧和注意事项,需要的朋友参考一下 本文浅析了C#的复制和克隆技术,对于有需要的朋友可以参考下。 在C#中,用HashTable,DataTable等实现复制和克隆,下面直接看例子: 以上代码能调试通过,但是问题又来了,当我们修改了ht2中了的键值之后,发现ht中的键值也修改了,显然这不是我想要的结果,然后略微思考,用了Clone

  • 本文向大家介绍如何复制或克隆Java ArrayList?,包括了如何复制或克隆Java ArrayList?的使用技巧和注意事项,需要的朋友参考一下  java.util.ArrayList类的 clone()方法返回此ArrayList实例的浅表副本(即,不复制元素本身)。使用此方法,可以将一个数组列表的内容复制到另一个数组列表。 示例 输出结果

  • Threejs大多数对象都有克隆.clone()和复制.copy()两个方法,点模型Points、线模型Line、网格网格模型Mesh一样具有这两个方法。 复制方法.copy() A.copy(B)表示B属性的值赋值给A对应属性。 var p1 = new THREE.Vector3(1.2,2.6,3.2); var p2 = new THREE.Vector3(0.0,0.0,0.0); p2

  • 我需要克隆非常大和复杂的Hibernate实体与许多@onetomany,@onetoone等关系,改变一些属性,并将克隆对象存储到数据库中。 我认为需要做的是: null