首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java更新excel元数据

如何使用java更新excel元数据
EN

Stack Overflow用户
提问于 2018-11-12 07:50:54
回答 1查看 521关注 0票数 0

我正在尝试使用apache更新java中的excel元数据。输入文件很大,包含8K列和600行。我使用下面的代码

代码语言:javascript
复制
    OPCPackage pkg = OPCPackage.open(new File("path for input"));
    POIXMLProperties props = new POIXMLProperties(pkg);
    props.getCoreProperties().setTitle("Test Title");

    XSSFWorkbook wb = new XSSFWorkbook(pkg);
    FileOutputStream fos = new FileOutputStream("path for output");
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    wb.write(bos);
    fos.close();

上面的代码将我抛出内存异常,如下所示。

代码语言:javascript
复制
java.lang.OutOfMemoryError: Java heap space
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3414)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1272)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1259)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument$Factory.parse(Unknown Source)
at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:227)
at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:219)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.parseSheet(XSSFWorkbook.java:452)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:417)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:184)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)

请您帮助解决此问题以更新excel属性吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 17:25:19

促进对答案的评论..。

如果您只是在更改OPC级元数据,则不需要在任何时候将文件加载到XSSF层中。如果还想更改电子表格内容(例如单元格),则只需要这样做。

您的代码可以非常简单

代码语言:javascript
复制
OPCPackage pkg = OPCPackage.open(new File("path for input"));
POIXMLProperties props = new POIXMLProperties(pkg);
props.getCoreProperties().setTitle("Test Title");
props.commit();
pkg.close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53257830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档