繁体   English   中英

阅读/解析MS Project MPP Java Android 5.0或更高版本?

[英]Reading/Parsing MS Project MPP java Android 5.0+?

阿罗哈

在Java上有一个MPXJ.org项目,可以导入所有版本的MS项目文件,但麻烦的是,对于高于2000-2003 .mpp版本的.mpp文件,对于高于2003的文件,awt java lib使用awt.Color(不会在Android上导入,并且所有内容

NoClassDefFoundError:无法解决以下问题:Ljava / awt / Color;

这是基本代码

MPPReader reader = new MPPReader();
String path2file = context.getFilesDir() + "/" +SAMPLE21_MPPX;
ProjectFile projectFile = reader.read(path2file); //<-- falling here

E / AndroidRuntime:致命异常: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,该POI通常也不会导入到Android,也不会连接,所以我使用了以下程序集: https : //github.com/centic9/poi-on-android

有awt.Color的解决方案,但是在这里我不知道该怎么办。

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

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

希望您可以直接在您的项目中使用此源,或者从poi-on-android JAR本身中学习该类。

这是分步解决方案。

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

//在这两行之后

编译'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 project 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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM