阅读/解析MS Project MPP java Android 5.0+?

时间:2018-02-22 21:30:16

标签: java android apache apache-poi mpxj

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的解决方案,但在这里我不明白该怎么做。

2 个答案:

答案 0 :(得分:2)

看起来您提供链接的Android版POI已经解决了这个问题。以下是java.awt.Color提供的poi-on-android的定义:

https://github.com/centic9/poi-on-android/blob/master/poishadow/src/main/java/org/apache/poi/java/awt/Color.java

希望您能够直接在项目中使用此源,或者从poi-on-android JAR本身中选择该类。

答案 1 :(得分:0)

这是一步一步的解决方案。

  • 在android studio中打开poi-on-android项目
  • 添加到build.gradle(模块:poishadow)

//在这两行之后

compile'org.apache.poi:poi-ooxml:3.17'

编译'com.fasterxml:aalto-xml:1.0.0'

//使用mpxj gradle添加此行

编译组:'net.sf.mpxj',名称:'mpxj',版本:'7.2.1'

  • 编译项目,获取文件\ poi-on-android-master \ poishadow \ build \ libs \ poishadow-all.jar

它只是一个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");