Android 如何优雅的申请权限

Excel

apache 为 Java开发者们提供了一套excel表格读写的工具:POI ,对于一个小白来说每次读写使用POI需要写一套复杂的读写流程实属不易,这里小编为大家封装了一套简单易用的excel读写工具

注解

描述

@ExcelReadCell

Name 标记表头名称

@ExcelTable

使用类上用来指定表名

@ExcelWriteAdapter

展开数据集合适配器

@ExcelWriteCell

@ExcelReadAggregate

标记类成员变量用来保存没有标记的数据

读取excel文件:

数据源(表名称:测试表1):

物品编码

物品名称

存放位置

备注

日期

TY122635

厨房-面团分割机

0

SDS-30S

2021.2.1

TY122654

黑白激光打印机

0

兄弟 HL-5590DN

2021.2.2

TY122652

黑白激光打印机

0

兄弟 HL-5590DN

2021.2.3

TY122634

台式计算机

0

联想ThinkCentre M710t-D749

2021.2.4

创建实体对象:

  1. @ExcelTable(sheetName = "测试表1")
  2. public class Table {
  3. @ExcelReadCell(name = "存放位置")
  4. public String storageLocation;
  5. @ExcelReadCell(name = "物品名称")
  6. public String name;
  7. @ExcelReadCell(name = "物品编码")
  8. public String code;
  9. //指定此变量保存其他数据,也可以不处理
  10. @ExcelReadAggregate
  11. public String extend;
  12. }

这里只指定了三列数据,其他没有指定的数据列(备注、日期),将被聚合保存到被**@ExcelReadAggregate标注extend变量中,当然如果不需要这些数据也可以不用声明变量使用@ExcelReadAggregate**标注。

被@ExcelReadAggregate标注的对象接收的是一个jsonArray String 对象。

  1. Table
  2. {
  3. storageLocation='0',
  4. note='SDS-30S',
  5. name='厨房-面团分割机',
  6. code='TY2023122635',
  7. extend=
  8. '[{"name":"日期","value":"2021.2.1","index":7},{"name":"备注","value":"SDS30S","index":8}]'

Use:

  1. Excel.get().readwith(is).doReadXLSX(new IParseListener<Table>() {
  2. @Override
  3. public void onStartParse() {
  4. }
  5. @Override
  6. public void onParse(Table test, JSONArray jsonArray) {
  7. }
  8. @Override
  9. public void onParseError(Exception e) {
  10. }
  11. @Override
  12. public void onEndParse() {
  13. }
  14. }, Table.class);

输出excel文件:

  1. @ExcelTable(sheetName = "测试表1")
  2. public class Table {
  3. @ExcelWriteCell(writeIndex = 2, writeName = "存放位置")
  4. public String storageLocation;
  5. @ExcelWriteCell(writeIndex = 1, writeName = "物品名称")
  6. public String name;
  7. @ExcelWriteCell(writeIndex = 0, writeName = "物品编码")
  8. public String code;
  9. //如果你将多个数据聚合在某一个变量中,可以通过实现IConvertParserAdapter接口来处理数据以便正确写入文件
  10. @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
  11. public String extend;
  12. }

@ExcelWriteCell

ExcelWriteCell注解有两个属性,writeIndex指定数据所属列,writeName指定列名称

@ExcelWriteAdapter

ExcelWriteAdapter用来辅助工具正确写入用户自定义的聚合数据。

这里extend 的数据如下:

  1. [
  2. {
  3. "name":"日期",
  4. "value":"2021.2.9",
  5. "index":3
  6. },
  7. {
  8. "name":"备注",
  9. "value":"1.0",
  10. "index":4
  11. }
  12. ]

Name 表示列名称,value表示值,index表示列号,这里的数据结构可以自行定义。

IConvertParserAdapter 接口

使用了聚合数据,就需要实现IConvertParserAdapter接口用来解析你的聚合数据并通过ISheet接口回调数据的列名称,值,列号等信息。

针对上面的聚合数据:

  1. public class JsonArrayConvertAdapter implements IConvertParserAdapter {
  2. @Override
  3. public void convert(ISheet sheet, Object o) {
  4. JSONArray jsOnArray= null;
  5. try {
  6. jsOnArray= new JSONArray((String) o);
  7. } catch (JSONException e) {
  8. e.printStackTrace();
  9. }
  10. for (int i = 0; i < jsonArray.length(); i++) {
  11. JSONObject json = (JSONObject) jsonArray.opt(i);
  12. String name = (String) json.opt("name");
  13. Object value = json.opt("value");
  14. int index = (int) json.opt("index");
  15. sheet.onCreateCell(name, value, index);
  16. }
  17. }
  18. }

@ExcelWriteAdapter使用方法:

  1. @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
  2. public String extend;

Use:

  1. Excel.get().writeWith(file).doWrite(new IWriteListener() {
  2. @Override
  3. public void onStartWrite() {
  4. Log.d(TAG, "onStartWrite: ");
  5. }
  6. @Override
  7. public void onWriteError(Exception e) {
  8. Log.d(TAG, "onWriteError: "+e);
  9. }
  10. @Override
  11. public void onEndWrite() {
  12. Log.d(TAG, "onEndWrite: ");
  13. }
  14. },data);

gitee地址:gitee.com/Jian-Hu/Exc…

github地址:github.com/Andihu/Exce…

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 10月 31日 上午11:47
下一篇 2023年 10月 31日 下午12:47

相关推荐

  • 龙珠激斗限时抢卡活动一般是什么时候出现

      上一期我们为大家盘点了三位限时四星卡,今天为大家带来的是获取难度更大的三名战士,无论你得到了它们中的谁,你都将获得问鼎全服排名的资格,如果“不幸”中奖,两个或者三个都有了的话,…

    2024年 1月 5日
  • oppoa3什么时候升级android10

    随着年关将至,众多的手机厂商纷纷赶在年前为广大用户带来最新的系统更新。作为oppo旗下的一款超视野全面屏手机,oppo A3在近日也收到了最新的ColorOS系统更新。 oppo …

    2023年 6月 5日
  • 古装探案剧唐朝诡事录,御赐小仵作唐朝诡事录成化十四年

    古装探案题材的电视剧,一直都非常受欢迎!像是《御赐小仵作》、《锦衣之下》都有着好口碑,而近期由杨旭文、杨志刚主演的《唐朝诡事录》,开播后也在网上大获好评。以下为10部古装探案剧推荐…

    2023年 7月 17日
  • 闲暇时间做的兼职

    兼职项目有很多种,在这条路上我也入过不少坑。大部分兼职都去试过,避免大家走更多的弯路,我介绍一些靠谱兼职,希望对你们有用,每个都能赚钱,只要跟着做,最快一天内可以有收入!但是每个人…

    数码教程 2023年 9月 16日
  • 看见美女时,如何搭讪加联系方式微信

    情感需要主动,需要命运,需要慢慢培养。当我们遇到我们最喜欢的漂亮女孩时,我们应该大胆地认识她,并争取一个追求她的机会。毕竟,错过它可能是一辈子。那么,当你看到一个美丽的女人时,你如…

    2023年 1月 24日
  • 道觉魔临(道觉魔临隐藏英雄密码)

    天天RPG 新年这第一道硬菜确实够硬,简短的新手指引也只是让玩家们大致了解了一下这张地图的基本玩法,更多的内容则全都交给玩家们自己去探索,这一下就让已经习惯了各类便捷打法地图的玩家…

    2022年 12月 25日
  • 手机网络连接电脑网络的三种方法,手机怎么连接电脑的网络

    手机怎么连接电脑网络 手机连接电脑网络的方法 在我们的日常生活中,几乎每天都离不开电脑和手机。其中,如果我们在使用手机时遇到了流量不够的情况,是可以通过连接电脑的网络在继续使用,但…

    2022年 12月 22日
  • 手机充电稍微碰一下就不充了(碰了一下手机充电线就充不进电了)

    手机充电是我们日常生活中常见的操作,但是有些时候,我们会遇到这样的情况:手机充电稍微碰一下就不充了,必须要使劲按着才能充电,手一松,就充不上电。这是什么原因呢?本文将从以下几个方面…

    2023年 8月 14日
  • 2022年基础研究前沿在哪里

    2022年,有哪些基础研究备受科学家关注?对于科研管理者和政策制定者而言,了解前沿研究,洞察科研动向,尤其是跟踪新兴专业领域具有重大意义。日前,中国科学院科技战略咨询研究院、中国科…

    数码教程 2023年 1月 23日
  • oppo手机里隐藏的七大功能是什么

    OPPO手机是我们经常用的手机。上面有些小功能我们是知道的,也有些小功能,我们是不知道的,今天小编就为大家盘点下OPPO手机上那些不为人知的小功能。下面我们一起来看看吧。 1、 黑…

    2023年 5月 21日