Android使用poi创建表格,并给单元格创建各自的格式

在Adroid中拟使用Excel等offic文档,从头开发所有的office格式、协议将是无比巨大的工作量,直接从第三方库来做就方便多了。

目前找到比较好的就是apache的poi。

poi是apache开发office库,java语言,用于PC端。

当直接在Android中引入poi,当你keep了所有的类和方法,以及dontwarn了所有的里边所引用java的API(主要是swt等)之后,基本的读写可以成功。

 

但是当想使用更多的功能的时候,其内部将调用到只有在JDK中的而Android SDK中没有的API,比如说我这里遇到的swt组件,Color等,将导致运行时出错。

创建新的单元格格式对象的时候出错的,workbook.createCellStyle().

但是发现HSSFCell的setCellStyle(HSSFCellStyle style)还有个重载的方法:setCellStyle(CellStyle style),而CellStyle是一个接口。

想到的最简单的方案自然是自己实现一个CellStyle接口,于是乎各种反射调用各种被隐藏的方法及创建对象。结果发现,apache那个坑,setCellStyle(CellStyle style)又调用了HSSFCell的setCellStyle(HSSFCellStyle style),并且里边还进行了强制类型转换。

那好吧,就直接改poi.jar,将所使用到的函数涉及到的Android中没有的API干掉,打包自己的jar包。

经实验测试成功。可以对日期等进行分别的单元格格式设置。

 

jar包:poi-3.17-jemen.jar

已标记关键词 清除标记
android 使用poi读取高版本excel, 解决以下这两个错误 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLEventFactory; at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:41) at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161) at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:97) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149) javax.xml.stream.FactoryConfigurationError: Provider com.sun.xml.internal.stream.events.XMLEventFactoryImpl not found at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) at javax.xml.stream.FactoryFinder.find(Unknown Source) at javax.xml.stream.FactoryFinder.find(Unknown Source) at javax.xml.stream.XMLEventFactory.newInstance(Unknown Source) at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:41) at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161) at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:97) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149)
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页