您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android怎么讀寫Excel”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android怎么讀寫Excel”文章能幫助大家解決問題。
apache 為 java開發者們提供了一套excel表格讀寫的工具:POI ,對于一個小白來說每次讀寫使用POI需要寫一套復雜的讀寫流程實屬不易,這里小編為大家封裝了一套簡單易用的excel讀寫工具
注解 | 描述 |
---|---|
@ExcelReadCell | Name 標記表頭名稱 |
@ExcelTable | 使用類上用來指定表名 |
@ExcelWriteAdapter | 展開數據集合適配器 |
@ExcelWriteCell | 輸出文件編輯列名稱,列號信息。 |
@ExcelReadAggregate | 標記類成員變量用來保存沒有標記的數據 |
數據源(表名稱:測試表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 |
創建實體對象:
@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標注extend變量中,當然如果不需要這些數據也可以不用聲明變量使用@ExcelReadAggregate**標注。
被@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用來輔助工具正確寫入用戶自定義的聚合數據。
這里extend 的數據如下:
[ { "name":"日期", "value":"2021.2.9", "index":3 }, { "name":"備注", "value":"1.0", "index":4 } ]
Name 表示列名稱,value表示值,index表示列號,這里的數據結構可以自行定義。
使用了聚合數據,就需要實現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 = 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);
關于“Android怎么讀寫Excel”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。