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

相关推荐

  • 微信拉黑给删除区别,微信删除和微信拉黑哪个更伤人

    微信拉黑好友和删除好友有什么区别,你知道吗?朋友们,大家好,我是小俊,一个专注于知识分享的博主,那微信呢,可以说是我们最常用的工具之一了,但是这里面的很多区别你都知道吗?那今天小俊…

    2023年 1月 25日
  • 新表情腾讯申请新狗头图形商标(腾讯狗头商标)

    如今聊天时 表情包肯定是不可缺少的 其中 " 狗头 " 表情 肯定要拥有姓名 应该是大家最喜欢发的表情了吧 最近腾讯狗头表情包又有“新款”了 ?!?! 还申请注…

    2023年 8月 25日
  • 如何将录音文件转化成文字

    在工作或者学习中,我们常常会将一些比较重要的事情录制下来,方便后续的整理和记录。可是如果一个录音的音频时长比较长的话,我们重新听一遍就会花费比较多的时间,再加上需要边听边整理,不仅…

    2023年 4月 29日
  • iphonedrop怎么隔空传输

    在日常生活和工作中,我们经常需要在手机和电脑之间传送文件,比如照片、视频、文档等。有时候,我们可能没有数据线或者U盘,或者不想通过云盘或者邮件等方式传输,那么有没有一种更简单、更快…

    2023年 4月 18日
  • oppo的充电器到底和别家的哪里不一样?拆开看看

    QC、PE、FCP、SCP、AFC、VOOC、PD,这些耳熟能详的英文词是目前各大手机厂家所支持的快速充电技术,目前市面上大多数手机大多数已经标配了快充,普及程度可以说无快充不旗舰…

    2023年 10月 10日
  • oppor11到底值不值得入手

    购买理由 1、去年R9太火。 2、广告做得好。传说中“请来了大半个娱乐圈为R11站台”。 3、其实我没花钱。 外观展示 全家福。耳机,线,充电器,主机盒子上方有单独的纸盒托,扣上之…

    2023年 12月 13日
  • 注册TWITTER账号的第一选择——拉力猫指纹浏览器

    最近总听朋友在我耳边说,某某同学又在twitter上赚了一大笔钱,我真是气不过,心想别人都能挣钱凭什么我不行 转头就在电脑上开始注册,结果怎么也注册不成功,于是到网上找解决办法,才…

    2023年 2月 20日
  • 十大手游研发商排行

    对一家手游工作室来说,把市场机遇和团队资源合理配置是非常有必要的,如果觉得一个平台可以的话,还要了解自己是否具备为这个平台研发作品的资源。这个道理,对于游戏开发公司也是同样适用的,…

    2023年 1月 13日
  • 苹果手机黑屏了怎么恢复正常(苹果5s黑屏不开机怎么修复)

    苹果手机黑屏是一种常见的手机故障,很多人在遇到手机突然黑屏的情况时感到束手无策。手机黑屏会干扰用户的正常使用,带来不便,并给用户带来不好的体验。苹果手机黑屏了怎么恢复正常?本文将为…

    2023年 12月 22日
  • 剪映影集怎么找素材(剪映如何在影集加入本地音乐)

    问题很多,咱一个一个的来,千万别慌[呲牙]。先说第一个问题,《剪映怎么把照片拼成小视频》。 在你的手机应用市场,免费下载剪映,免费使用。 请打开剪映,点击“开始创作”下图[机智] …

    2023年 10月 18日