Android Studio导出Excel的一些感悟

目前,我一共用了四种依赖。分别用于导出Excel。

第一种:

// https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl
    implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'

缺点:1、已经很久没有更新了,最近一次更新在2011年,那时安卓刚兴起来……

缺点:2、在IDAE的pom.xml里添加依赖时,会黄标报错:“ 提供可传递的易受攻击的依赖项 maven:log4j:log4j:1.2.14 CVE-2019-17571 9.8 Deserialization of Untrusted Data vulnerability CVE-2019-17571 9.8 Deserialization of Untrusted Data vulnerability CVE-2021-4104 7.5 Deserialization of Untrusted Data vulnerability CVE-2021-4104 7.5 Deserialization of Untrusted Data vulnerability CVE-2022-23302 8.8 Deserialization of Untrusted Data vulnerability CVE-2022-23302 8.8 Deserialization of Untrusted Data vulnerability CVE-2022-23305 9.8 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability CVE-2022-23305 9.8 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability CVE-2022-23307 8.8 Deserialization of Untrusted Data vulnerability CVE-2022-23307 8.8 Deserialization of Untrusted Data vulnerability  结果由 Checkmarx(c) 提供技术支持

优点:设置字体大小、字体样式、边框格式、填充底色比较容易。

可能的缺点(我还没有试):写入数据时,需要提前写出每一排Row的数据。比如,第一次先写入第一排的第一个数据AAA。第二次写入第一排的第二个数据BBB,那么最后导出时,还能不能显示AAA?你也许会说,会何不一次把AAA、BBB同时写入?——答案是,因为各种原因,不能同时写入。或者反复打开workbook反复写?


第二种

// https://mvnrepository.com/artifact/org.apache.poi/poi
    implementation group: 'org.apache.poi', name: 'poi', version: '5.2.5'//只支持HSSF

缺点:1、只支持HSSFWorkbook。

缺点:2、第一次导出时会稍微有点卡顿,logcat里会报错,说是没有log4j。添加如下代码,并用了log4j,也没有用

// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
    implementation(group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.21.1') {
        exclude group: 'org.apache.logging.log4j', module: 'log4j-api'
        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
        exclude group: 'org.slf4j', module: 'slf4j-api'
    }

同时,IDEA会增加另一项报错,大意是在主线程里执行了太多的任务。

缺点:3、不能设置style。虽然写代码时不报错。但是执行时,会报错——直接闪退。导出来的表格,文字默认在单元格的左下角。不能设置字体大小、颜色、位置……感觉非常鸡肋——就是为老旧版本(2003)提供的一种支持。

缺点:某些版本的Android Studio新建

HSSFWorkbook workbook = new HSSFWorkbook();

时黄标报错。

优点:老牌、大厂、硬核、经常更新。


第三种

 // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
  implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.5'//只支持XSSF,第一次导出报错。

缺点:1、报错,卡顿——与第二种一样。毕竟都是一家公司的产品。

缺点:2、仅支持XSSF。

缺点:3、如果你设置的导出格式为.xls,而不是.xlsx。当传入PC端打开时,还会报错,会把文件再格式化一次。导致有些格式丢失。

优点:1、可以设置style。但是似乎没有第一种那么容易。需要一个格一个格地去设置。如先设置一个style,去套格式,感觉总是有问题。比如先设置了合并单元格,再设置边框,总是发现有些边框不显示……

优点:2、老牌、大厂、硬核、经常更新。


第四种

    // https://mvnrepository.com/artifact/com.alibaba/easyexcel
    implementation group: 'com.alibaba', name: 'easyexcel', version: '3.3.2'//只支持HSSF

缺点:1、只支持HSSF

缺点:2、不能用easyexcel原生的写入方式(EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());)

写入方式与poi的格式一样。

缺点:3、不能设置style。虽然

HSSFCellStyle style = workbook.createCellStyle();

代码不飘红,但运行时闪退,说是不支持Ljava/awt/Color;

优点:1、没有顿卡。logcat里不报错。

优点:2、大厂,经常更新。


总结:所以到底菜是原罪?还是本来就这样?你们安卓都用啥导出Excel?

另外,注意:if(第四种  &&(第二种  ||  第三种依赖)){

                ERROR你没商量!

}

你可能感兴趣的:(excel,java,android,studio)