Excel
apache 为 Java开发者们提供了一套excel表格读写的工具:POI ,对于一个小白来说每次读写使用POI需要写一套复杂的读写流程实属不易,这里小编为大家封装了一套简单易用的excel读写工具
描述
@ExcelReadCell
Name 标记表头名称
@ExcelTable
使用类上用来指定表名
@ExcelWriteAdapter
展开数据集合适配器
@ExcelWriteCell
@ExcelReadAggregate
标记类成员变量用来保存没有标记的数据
读取excel文件:
数据源(表名称:测试表1):
物品名称
【Android 如何优雅的申请权限】存放位置
备注
日期
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
创建实体对象:
- @ExcelTable(sheetName = "测试表1")
- public class Table {
- @ExcelReadCell(name = "存放位置")
- public String storageLocation;
- @ExcelReadCell(name = "物品名称")
- public String name;
- @ExcelReadCell(name = "物品编码")
- public String code;
- //指定此变量保存其他数据 , 也可以不处理
- @ExcelReadAggregate
- public String extend;
- }
被@ExcelReadAggregate标注的对象接收的是一个jsonArray String 对象 。
- Table
- {
- storageLocation='0',
- note='SDS-30S',
- name='厨房-面团分割机',
- code='TY2023122635',
- extend=
- '[{"name":"日期","value":"2021.2.1","index":7},{"name":"备注","value":"SDS30S","index":8}]'
- Excel.get().readwith(is).doReadXLSX(new IParseListener<Table>() {
- @Override
- public void onStartParse() {
- }
- @Override
- public void onParse(Table test, JSONArray jsonArray) {
- }
- @Override
- public void onParseError(Exception e) {
- }
- @Override
- public void onEndParse() {
- }
- }, Table.class);
- @ExcelTable(sheetName = "测试表1")
- public class Table {
- @ExcelWriteCell(writeIndex = 2, writeName = "存放位置")
- public String storageLocation;
- @ExcelWriteCell(writeIndex = 1, writeName = "物品名称")
- public String name;
- @ExcelWriteCell(writeIndex = 0, writeName = "物品编码")
- public String code;
- //如果你将多个数据聚合在某一个变量中,可以通过实现IConvertParserAdapter接口来处理数据以便正确写入文件
- @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
- public String extend;
- }
ExcelWriteCell注解有两个属性,writeIndex指定数据所属列,writeName指定列名称
@ExcelWriteAdapter
ExcelWriteAdapter用来辅助工具正确写入用户自定义的聚合数据 。
这里extend 的数据如下:
- [
- {
- "name":"日期",
- "value":"2021.2.9",
- "index":3
- },
- {
- "name":"备注",
- "value":"1.0",
- "index":4
- }
- ]
IConvertParserAdapter 接口
使用了聚合数据,就需要实现IConvertParserAdapter接口用来解析你的聚合数据并通过ISheet接口回调数据的列名称,值,列号等信息 。
针对上面的聚合数据:
- public class JsonArrayConvertAdapter implements IConvertParserAdapter {
- @Override
- public void convert(ISheet sheet, Object o) {
- JSONArray jsOnArray= null;
- try {
- jsOnArray= new JSONArray((String) o);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject json = (JSONObject) jsonArray.opt(i);
- String name = (String) json.opt("name");
- Object value = http://www.chy56.com/show/json.opt("value");
- int index = (int) json.opt("index");
- sheet.onCreateCell(name, value, index);
- }
- }
- }
- @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
- public String extend;
- Excel.get().writeWith(file).doWrite(new IWriteListener() {
- @Override
- public void onStartWrite() {
- Log.d(TAG, "onStartWrite: ");
- }
- @Override
- public void onWriteError(Exception e) {
- Log.d(TAG, "onWriteError: "+e);
- }
- @Override
- public void onEndWrite() {
- Log.d(TAG, "onEndWrite: ");
- }
- },data);
github地址:github.com/Andihu/Exce…
- 你几月出生,就是什么动物!准确生肖
- 华为hicar智行怎么关闭音乐
- 蝴蝶翅膀上为什么有那么多颜色
- 黄油做淡奶油的方法,打发黄油淡奶油油水分离什么意思
- 蚂蚁的气味语言,蚂蚁奇妙的语言
- 小米手机怎么长按屏幕识别文字 小米手机怎么识别图片上的文字
- 手机qq好友误删,如何才能恢复删除的好友呢
- 如何在qq浏览器上使用微信聊天
- 陈说美食胖妹生二胎了吗