无法将 xlsx 电子表格加载到 Eclipse 中
Unable to load an xlxs spreadsheet into eclipse
我想使用 eclipse 实现一个 java 桌面应用程序,它从用户那里获取信息并将其保存到 excel 电子表格(使用 docx4j),但我在最开始遇到了一个问题开始.
我正在尝试使用以下代码加载电子表格:
private static void load(String filepath) {
SpreadsheetMLPackage exc;
try {
exc = SpreadsheetMLPackage.load(new java.io.File(filepath));
} catch (Docx4JException e) {
e.printStackTrace();
}
}
但我收到此错误:
[main] ERROR org.docx4j.jaxb.Context - Cannot initialize context
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.plutext.jaxb.xmldsig" doesnt contain ObjectFactory.class or jaxb.index
- with linked exception:
[javax.xml.bind.JAXBException: "org.plutext.jaxb.xmldsig" doesnt contain ObjectFactory.class or jaxb.index]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at org.docx4j.jaxb.Context.<clinit>(Context.java:158)
at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:679)
at org.docx4j.openpackaging.io3.Load3.get(Load3.java:132)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:454)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:371)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:262)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:242)
at org.docx4j.openpackaging.packages.SpreadsheetMLPackage.load(SpreadsheetMLPackage.java:97)
注意:
1- 创建新的电子表格工作正常。 2- 添加到我的项目中的外部 jar 是:docx4j-3.2.1、jcl-over-slf4j-1.7.12、slf4j-api-1.7.12、slf4j-simple-1.7.12。
3- 我在 google 上搜索了一个解决方案,我发现我必须将 org.apache.xalan 和 org.apache.xml.serializer jar 添加到我的项目中,但仍然没有用。
您需要包含所有 docx4j 的依赖项。
缺少此特定错误的原因http://www.docx4java.org/docx4j/docx4j-3_2_0/dependencies/jaxb-xmldsig-core-1.0.0.jar
我想使用 eclipse 实现一个 java 桌面应用程序,它从用户那里获取信息并将其保存到 excel 电子表格(使用 docx4j),但我在最开始遇到了一个问题开始.
我正在尝试使用以下代码加载电子表格:
private static void load(String filepath) {
SpreadsheetMLPackage exc;
try {
exc = SpreadsheetMLPackage.load(new java.io.File(filepath));
} catch (Docx4JException e) {
e.printStackTrace();
}
}
但我收到此错误:
[main] ERROR org.docx4j.jaxb.Context - Cannot initialize context
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.plutext.jaxb.xmldsig" doesnt contain ObjectFactory.class or jaxb.index
- with linked exception:
[javax.xml.bind.JAXBException: "org.plutext.jaxb.xmldsig" doesnt contain ObjectFactory.class or jaxb.index]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at org.docx4j.jaxb.Context.<clinit>(Context.java:158)
at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:679)
at org.docx4j.openpackaging.io3.Load3.get(Load3.java:132)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:454)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:371)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:262)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:242)
at org.docx4j.openpackaging.packages.SpreadsheetMLPackage.load(SpreadsheetMLPackage.java:97)
注意: 1- 创建新的电子表格工作正常。 2- 添加到我的项目中的外部 jar 是:docx4j-3.2.1、jcl-over-slf4j-1.7.12、slf4j-api-1.7.12、slf4j-simple-1.7.12。 3- 我在 google 上搜索了一个解决方案,我发现我必须将 org.apache.xalan 和 org.apache.xml.serializer jar 添加到我的项目中,但仍然没有用。
您需要包含所有 docx4j 的依赖项。
缺少此特定错误的原因http://www.docx4java.org/docx4j/docx4j-3_2_0/dependencies/jaxb-xmldsig-core-1.0.0.jar