最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Excel

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

注解描述
@ExcelReadCellName 標(biāo)記表頭名稱
@ExcelTable使用類上用來(lái)指定表名
@ExcelWriteAdapter展開(kāi)數(shù)據(jù)集合適配器
@ExcelWriteCell輸出文件編輯列名稱,列號(hào)信息。
@ExcelReadAggregate標(biāo)記類成員變量用來(lái)保存沒(mé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ù),其他沒(méi)有指定的數(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ù)以便正確寫(xiě)入文件
    @ExcelWriteAdapter(adapter = JsonArrayConvertAdapter.class)
    public String extend;
}

@ExcelWriteCell

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

@ExcelWriteAdapter

ExcelWriteAdapter用來(lái)輔助工具正確寫(xiě)入用戶自定義的聚合數(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)雅的讀寫(xiě)Excel的詳細(xì)內(nèi)容,更多關(guān)于Android 讀寫(xiě)Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android日期選擇器對(duì)話框DatePickerDialog使用詳解

    Android日期選擇器對(duì)話框DatePickerDialog使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android日期選擇器對(duì)話框DatePickerDialog的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android-屏幕適配需要注意的地方總結(jié)

    Android-屏幕適配需要注意的地方總結(jié)

    需要注意一下幾個(gè)地方:盡量使用線性布局/盡量使用dip和sp,不要使用px/為不同的分辨率提供不同的布局文件和圖片,接下來(lái)為你詳細(xì)介紹下,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • 老生常談onTouch和onTouchEvent(必看篇)

    老生常談onTouch和onTouchEvent(必看篇)

    下面小編就為大家?guī)?lái)一篇老生常談onTouch和onTouchEvent(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Android實(shí)現(xiàn)Unity3D下RTMP推送的示例

    Android實(shí)現(xiàn)Unity3D下RTMP推送的示例

    像Unity3D下的RTMP或RTSP播放器一樣,好多開(kāi)發(fā)者苦于在Unity環(huán)境下,如何高效率低延遲的把數(shù)據(jù)采集并編碼實(shí)時(shí)推送到流媒體服務(wù)器,實(shí)現(xiàn)Unity場(chǎng)景下的低延遲推拉流方案。本文介紹幾種RTMP推送的方案
    2021-06-06
  • Android編程之重力感應(yīng)用法分析

    Android編程之重力感應(yīng)用法分析

    這篇文章主要介紹了Android編程之重力感應(yīng)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了重力感應(yīng)的原理、相關(guān)概念與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-10-10
  • android廣角相機(jī)畸變校正算法和實(shí)現(xiàn)示例

    android廣角相機(jī)畸變校正算法和實(shí)現(xiàn)示例

    今天小編就為大家分享一篇android廣角相機(jī)畸變校正算法和實(shí)現(xiàn)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Android如何通過(guò)手機(jī)自動(dòng)獲取短信驗(yàn)證碼

    Android如何通過(guò)手機(jī)自動(dòng)獲取短信驗(yàn)證碼

    注冊(cè)帳號(hào)時(shí),經(jīng)常需要手機(jī)獲取驗(yàn)證碼,Android如何通過(guò)手機(jī)自動(dòng)獲取短信驗(yàn)證碼,下面看看小編給大家分享的一段代碼,感興趣的小伙伴們可以參考一下
    2016-03-03
  • android PopupWindow點(diǎn)擊外部和返回鍵消失的解決方法

    android PopupWindow點(diǎn)擊外部和返回鍵消失的解決方法

    這篇文章主要介紹了android PopupWindow點(diǎn)擊外部和返回鍵消失的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-02-02
  • android禁止鎖屏保持常亮(示例代碼)

    android禁止鎖屏保持常亮(示例代碼)

    android禁止鎖屏保持常亮(示例代碼)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • Android 解決WebView調(diào)用loadData()方法顯示亂碼的問(wèn)題

    Android 解決WebView調(diào)用loadData()方法顯示亂碼的問(wèn)題

    這篇文章主要介紹了Android 解決WebView調(diào)用loadData()方法顯示亂碼的問(wèn)題的相關(guān)資料,希望通過(guò)本文能幫助到大家解決這樣的問(wèn)題,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

腾冲县| 娄烦县| 莱州市| 常熟市| 遵义市| 彭水| 鄂托克前旗| 抚州市| 徐闻县| 靖江市| 玉田县| 吉首市| 塔城市| 六安市| 尖扎县| 县级市| 衡阳县| 招远市| 克什克腾旗| 广南县| 兴山县| 健康| 丰镇市| 且末县| 汾西县| 敖汉旗| 祥云县| 安顺市| 西乡县| 社旗县| 田东县| 临安市| 翁源县| 义马市| 固阳县| 石家庄市| 临桂县| 佛坪县| 遂溪县| 栾川县| 揭东县|