欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android?優(yōu)雅的讀寫Excel

 更新時(shí)間:2023年03月30日 08:33:59   作者:Hujian  
這篇文章主要為大家介紹了Android優(yōu)雅的讀寫Excel實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Excel

apache 為 java開發(fā)者們提供了一套excel表格讀寫的工具:POI ,對(duì)于一個(gè)小白來(lái)說(shuō)每次讀寫使用POI需要寫一套復(fù)雜的讀寫流程實(shí)屬不易,這里小編為大家封裝了一套簡(jiǎn)單易用的excel讀寫工具

注解描述
@ExcelReadCellName 標(biāo)記表頭名稱
@ExcelTable使用類上用來(lái)指定表名
@ExcelWriteAdapter展開數(shù)據(jù)集合適配器
@ExcelWriteCell輸出文件編輯列名稱,列號(hào)信息。
@ExcelReadAggregate標(biāo)記類成員變量用來(lái)保存沒有標(biāo)記的數(shù)據(jù)

讀取excel文件:

數(shù)據(jù)源(表名稱:測(cè)試表1):

物品編碼物品名稱存放位置備注日期
TY122635廚房-面團(tuán)分割機(jī)0SDS-30S2021.2.1
TY122654黑白激光打印機(jī)0兄弟 HL-5590DN2021.2.2
TY122652黑白激光打印機(jī)0兄弟 HL-5590DN2021.2.3
TY122634臺(tái)式計(jì)算機(jī)0聯(lián)想ThinkCentre M710t-D7492021.2.4

創(chuàng)建實(shí)體對(duì)象:

@ExcelTable(sheetName = "測(cè)試表1")
public class Table {
    @ExcelReadCell(name = "存放位置")
    public String storageLocation;
    @ExcelReadCell(name = "物品名稱")
    public String name;
    @ExcelReadCell(name = "物品編碼")
    public String code;
    //指定此變量保存其他數(shù)據(jù),也可以不處理
    @ExcelReadAggregate
    public String extend;
}

這里只指定了三列數(shù)據(jù),其他沒有指定的數(shù)據(jù)列(備注、日期),將被聚合保存到被**@ExcelReadAggregate標(biāo)注extend變量中,當(dāng)然如果不需要這些數(shù)據(jù)也可以不用聲明變量使用@ExcelReadAggregate**標(biāo)注。

被@ExcelReadAggregate標(biāo)注的對(duì)象接收的是一個(gè)JsonArray String 對(duì)象。

Table
{ 
storageLocation='0',
note='SDS-30S', 
name='廚房-面團(tuán)分割機(jī)', 
code='TY2023122635', 
extend=
'[{"name":"日期","value":"2021.2.1","index":7},{"name":"備注","value":"SDS30S","index":8}]'

Use:

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);

輸出excel文件:

@ExcelTable(sheetName = "測(cè)試表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;
    //如果你將多個(gè)數(shù)據(jù)聚合在某一個(gè)變量中,可以通過(guò)實(shí)現(xiàn)IConvertParserAdapter接口來(lái)處理數(shù)據(jù)以便正確寫入文件
    @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
    public String extend;
}

@ExcelWriteCell

ExcelWriteCell注解有兩個(gè)屬性,writeIndex指定數(shù)據(jù)所屬列,writeName指定列名稱

@ExcelWriteAdapter

ExcelWriteAdapter用來(lái)輔助工具正確寫入用戶自定義的聚合數(shù)據(jù)。

這里extend 的數(shù)據(jù)如下:

[
    {
        "name":"日期",
        "value":"2021.2.9",
        "index":3
    },
    {
        "name":"備注",
        "value":"1.0",
        "index":4
    }
]

Name 表示列名稱,value表示值,index表示列號(hào),這里的數(shù)據(jù)結(jié)構(gòu)可以自行定義。

IConvertParserAdapter 接口

使用了聚合數(shù)據(jù),就需要實(shí)現(xiàn)IConvertParserAdapter接口用來(lái)解析你的聚合數(shù)據(jù)并通過(guò)ISheet接口回調(diào)數(shù)據(jù)的列名稱,值,列號(hào)等信息。

針對(duì)上面的聚合數(shù)據(jù):

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 = json.opt("value");
            int index = (int) json.opt("index");
            sheet.onCreateCell(name, value, index);
        }
    }
}

@ExcelWriteAdapter使用方法:

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

Use:

 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);

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

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

以上就是Android 優(yōu)雅的讀寫Excel的詳細(xì)內(nèi)容,更多關(guān)于Android 讀寫Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論