Android Studio导出Excel的一些感悟

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

第一种:

// https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxlimplementation 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/poiimplementation 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-coreimplementation(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-ooxmlimplementation 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/easyexcelimplementation 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你没商量!

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文教会pandas

今天的笔试题令我感触很深,回顾一下之前写的都是低代码想想都。。。 anareport[[reportid,anndt,stockid]].drop_duplicates().rolling(window10,min_periods1).sum().groupby([anndt,stockid])[reportid].count() dfanareport[[reportid,anndt,stockid]].drop_dup…

构建高效持久层:深度解析 MyBatis-Plus(02)

目录 引言1. 逻辑删除1.1 概述1.2 逻辑删除的优势1.3.为什么使用逻辑删除1.4 综合案例 2. 乐观锁和悲观锁2.1.什么是乐观锁和悲观锁2.2.乐观锁和悲观锁的区别2.3.综合案例 3. 分页插件总结 引言 在现代软件开发中,数据库操作是不可或缺的一环。为了提高系统的性能、…

awk统计日志

部分日志文本格式内容 [2023-12-18 22:40:52.301][INFO ][221][com.excellent.common.core.security.filter.UrlRedirectFilter.doFilter:131] ----------------->>> 请求进入拦截器,IP:14.111.199.218, CLIENT:ANDROID&#xff0c…

避坑指南:uni-forms表单在uni-app中的实践经验

​🌈个人主页:前端青山 🔥系列专栏:uni-app篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:uni-app中forms表单的避坑指南篇 该篇章已被前端圈子收录,点此处进入即可查看更多优质内…

LeetCode-152. 乘积最大子数组

问题描述 原题链接 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 问题分析 …

计算机网络考研辨析(后续整理入笔记)

文章目录 体系结构物理层速率辨析交换方式辨析编码调制辨析 链路层链路层功能介质访问控制(MAC)信道划分控制之——CDMA随机访问控制轮询访问控制 扩展以太网交换机 网络层网络层功能IPv4协议IP地址IP数据报分析ICMP 网络拓扑与转发分析(重点…

Distilling the Knowledge in a Neural Network 中文版 (含: bibtex格式的引用)

bibtex格式的引用 article{hinton2015distilling,title{Distilling the knowledge in a neural network},author{Hinton, Geoffrey and Vinyals, Oriol and Dean, Jeff},journal{arXiv preprint arXiv:1503.02531},year{2015} }摘要 提高几乎所有机器学习算法性能的一个非常简…

阶段十-springsecurity总结

jwt认证流程 SpringSecurity 认证过程 第一步: 创建一个类实现UserDetailsService接口,重写其中的方法 通过重写 public UserDetails loadUserByUsername(String username) 方法 从数据库校验用户输入的用户名 配置SecurityConfig Bean注入 Passwor…

面试题总结(十一)【C++】【华清远见西安中心】

C和C的区别有哪些? C 和 C 是两种不同的编程语言,它们有以下一些区别: 1. 语言起源和发展:C 语言是由贝尔实验室的 Dennis Ritchie 在 1972 年开发的,主要用于系统编程和底层开发;而 C 语言是在 C 语言的基…

类中成员函数及普通函数地址获取方式

文章目录 代码准备测试演示注意事项成员函数类型申明测试演示总的打印输出 代码准备 头文件:Calc.h #pragma onceclass Calc { public:int add(int,int);//函数声明static int sub(int,int);//函数声明 public:int b;//定义了一个成员变量static int a;//声明了一个静态成员变…

SG3524控制的恒流源电路图

SG3524简介 SG3524是开关电源脉宽调制型控制器。应用于开关稳压器,变压器耦合的直流变换器,电压倍增器,极性转换器等。采用固定频率,脉冲宽度调制(脉宽调制)技术。输出允许单端或推挽输出。芯片电路包括电…

lvs负载均衡

lvs负载均衡群集 群集 特点:由多台主机构成,都干同一件事,对外显示一个整体 企业集群分类 负载均衡群集高可用群集高性能运算群集 负载均衡群集(LB) 负载均衡的作用 提高应用系统的响应能力可以处理更多的访问请…

Bifrost 中间件 X-Requested-With 系统身份认证绕过漏洞复现

0x01 产品简介 Bifrost是一款面向生产环境的 MySQL,MariaDB,kafka 同步到Redis,MongoDB,ClickHouse等服务的异构中间件 0x02 漏洞概述 Bifrost 中间件 X-Requested-With 存在身份认证绕过漏洞,未经身份认证的攻击者可未授权创建管理员权限账号,可通过删除请求头实现身…

动态加载库

no_mangle 不要改标识符 首先是认识这个标注:mangle,英文的含义“撕裂、碾压”。我第一次把这个单次误以为是manage,说实话两个单词还挺像的。 RUS中函数或静态变量使用#[no_mangle]这个标注属性后,编译器就不会修改它们的名字了…

Home Assistant 如何开启SSH服务

环境: Home Assistant 11.2 SSH & Web Terminal 17.0 问题描述: Home Assistant 如何开启SSH服务 解决方案: 通过添加一个名为Terminal & SSH的插件来在 Home Assistant 中启用 SSH 服务 下面是启用 SSH 服务的大致步骤&#x…

C++第一讲之初入C++

注:本文是对于学完C语言再学C同学的讲解,主要补充C与C语言不同之处,如果你没学过C语言,不建议观看本文。 一.C简介 我们都知道C语言是过程性语言(强调的是实现过程),即对计算机语言要处理的两…

计算机组成原理(存储器的校验)

存储器的校验 说到存储器的校验就是海明码(汉明码),这种题型有两种: 1.编码问题:根据要传送的二进制代码来确定其对应的海明码(汉明码) 2.检错问题:已知收到的汉明码,…

【Linux】Linux运维基础

Linux简介: Linux是一个开源的操作系统内核,最初由Linus Torvalds创建。它通常与GNU工具一起使用,以创建一个完整的操作系统。Linux操作系统有许多基于内核的发行版,如Ubuntu、CentOS、Debian等,每个发行版都有其独特的…

深度学习中常见的激活函数

前文介绍 我们在前面了解到了线性回归模型,其实我们可以把线性回归看成一个单个的神经元,它实际上就完成了两个步骤 1.对输入的特征的加权求和 2.将结果通过传递函数(或者激活函数)输出 这里我们提到了传递函数(或者…

HarmonyOS4.0从零开始的开发教程18后台代理提醒

HarmonyOS(十六)后台代理提醒 简介 随着生活节奏的加快,我们有时会忘记一些重要的事情或日子,所以提醒功能必不可少。应用可能需要在指定的时刻,向用户发送一些业务提醒通知。例如购物类应用,希望在指定时…