读取/解析MS Project MPP java Android 5.0+;?
大家好 Java上有一个MPXJ.org项目可以导入所有版本的MS project文件,但问题是,对于高于2000-2003.mpp版本的.mpp文件,对于高于2003的文件,awt Java lib使用的是awt.Color(getColor),它不是在Android上导入的,并且所有内容都与之相关 NoClassDefFoundError:解析失败:Ljava/awt/Color 这里是基本代码读取/解析MS Project MPP java Android 5.0+;?,java,android,apache,apache-poi,mpxj,Java,Android,Apache,Apache Poi,Mpxj,大家好 Java上有一个MPXJ.org项目可以导入所有版本的MS project文件,但问题是,对于高于2000-2003.mpp版本的.mpp文件,对于高于2003的文件,awt Java lib使用的是awt.Color(getColor),它不是在Android上导入的,并且所有内容都与之相关 NoClassDefFoundError:解析失败:Ljava/awt/Color 这里是基本代码 MPPReader reader = new MPPReader(); String path2
MPPReader reader = new MPPReader();
String path2file = context.getFilesDir() + "/" +SAMPLE21_MPPX;
ProjectFile projectFile = reader.read(path2file); //<-- falling here
MPPReader读取器=新的MPPReader();
String path2file=context.getFilesDir()+“/”+SAMPLE21_MPPX;
ProjectFile ProjectFile=reader.read(路径文件)// 看起来您提供链接的Android版POI已经解决了这个问题。以下是android上的poi提供的java.awt.Color
的定义:
希望您能够在项目中直接使用该源代码,或者从android上的poi
JAR本身获取该类。这里是逐步解决方案
- android studio中的开放项目
- 添加到build.gradle(模块:poisshadow)
//这两行之后
编译“org.apache.poi:poi ooxml:3.17”
编译'com.fasterxml:aalto-xml:1.0.0'
//使用mpxj gradle添加此行
编译组:'net.sf.mpxj',名称:'mpxj',版本:'7.2.1'
- 编译项目,在安卓主机上获取文件\poi\poishadow\build\libs\poishadow all.jar
它集ApachePOI和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");