Aloha给所有人。
在Java上有一个MPXJ.org项目可以导入所有版本的MS项目文件,但问题是对于高于2000-2003 .mpp的.mpp文件,对于高于2003的文件,awt使用的是java lib .Color(getColor)未在Android上导入,一切都在
NoClassDefFoundError:解析失败:Ljava / awt / Color;
这里是基本代码
List<int>
E / AndroidRuntime:FATAL EXCEPTION:main
处理:com.example.bio.tj,PID:13427
java.lang.NoClassDefFoundError:解析失败:Ljava / awt / Color;
在net.sf.mpxj.mpp.MPPUtility.getColor(MPPUtility.java:543)等...
并且这个MPXJ也依赖于Apache POI,它通常也不会导入到Android,也不连接,我使用了这个程序集:https://github.com/centic9/poi-on-android
有awt.Color的解决方案,但在这里我不明白该怎么做。
答案 0 :(得分:2)
看起来您提供链接的Android版POI已经解决了这个问题。以下是java.awt.Color
提供的poi-on-android
的定义:
希望您能够直接在项目中使用此源,或者从poi-on-android
JAR本身中选择该类。
答案 1 :(得分:0)
这是一步一步的解决方案。
//在这两行之后
compile'org.apache.poi:poi-ooxml:3.17'
编译'com.fasterxml:aalto-xml:1.0.0'
//使用mpxj gradle添加此行
编译组:'net.sf.mpxj',名称:'mpxj',版本:'7.2.1'
它只是一个apache poi和mpxj,之后我把这个文件导入到我的项目中,似乎第一次运行正常(在ms项目2010/2016文件上测试),并在我的项目中添加onCreate我添加了
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.setProperty("org.apache.poi.javax.xml.stream.XMLInputFactory", "com.fasterxml.aalto.stax.InputFactoryImpl");
System.setProperty("org.apache.poi.javax.xml.stream.XMLOutputFactory", "com.fasterxml.aalto.stax.OutputFactoryImpl");
System.setProperty("org.apache.poi.javax.xml.stream.XMLEventFactory", "com.fasterxml.aalto.stax.EventFactoryImpl");