最近有個需求需要在app內(nèi)置數(shù)據(jù),新來的產(chǎn)品扔給了我兩個Excel表格就不管了(兩個表格格式還不統(tǒng)一。。怜浅。),于是通過度娘等方法找到了Android中讀取Excel表格文件的一種方法蔬崩,記錄一下恶座。
閑話一下Excel中工作簿和工作表的區(qū)別:
工作簿中包含有工作表。工作簿可以由一張或多張工作表組成沥阳,一個工作簿就是一個EXCEL表格文件跨琳。
好了,開始讀取表格文件吧桐罕。
前提
首先脉让,我們假設(shè)需要讀取的表格文件名字為test.xls
, 位于assets根目錄下。
所需Jar包
這里為了能讀取到Excel表格文件功炮,我們要添加一個第三方Jar包jxl
溅潜。
這里有點兒需要注意的地方:由于表格文件格式較多,老版本的jxl后只支持Excel2003版本的薪伏,所以如果拿到的表格文件格式是xlsm或者xlsn之類的滚澜,我們首先要把文件另存為xls格式。
開始讀取
1.初始化變量:
InputStream inputStream = null;//輸入流
FileOutputStream outputStream = null;//輸出流
Workbook book = null;//Excel工作簿對象
2.以流的方式讀取我們內(nèi)置在assets目錄下的表格文件
inputStream = context.getAssets().open("test.xls");
3.將上一步的輸入流讀取成一個文件嫁怀,方便后續(xù)使用
File tempFile = new File(context.getCacheDir(), "test.xls");//臨時文件博秫,第二個參數(shù)為文件名字潦牛,可隨便取
outputStream = new FileOutputStream(tempFile);
byte[] buf = new byte[1024];
int len;
while ((len = inputStream.read(buf)) > 0) {//while循環(huán)進行讀取
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
4.得到Excel文件對象后,就可以利用jxl包中提供的各種方法來操作表格文件挡育。jxl提供的方法很多,這里簡單介紹下項目中用到的幾個朴爬。
book = Workbook .getWorkbook(tempFile);//用讀取到的表格文件來實例化工作簿對象(符合常理即寒,我們所希望操作的就是Excel工作簿文件)
Sheet[] sheets = book.getSheets(); //得到所有的工作表
for (int m = 0; m < sheets.length; m++) {
Sheet sheet = book.getSheet(m);
int Rows = sheet.getRows();//得到當前工作表的行數(shù)
int Cols = sheet.getColumns(); //得到當前工作表的列數(shù)
for (int i = 0; i < Cols; i++) { // 注意:這里是按列讀取的!U儇母赵!
for (int j = 0; j < Rows; j++) {
String content=sheet.getCell(i, j).getContents();//結(jié)果是String類型的具滴,根據(jù)具體需求進行類型轉(zhuǎn)換
}
}
}
總結(jié)
如果表格文件是內(nèi)置在assets目錄下的話凹嘲,按照以上流程讀取即可,如果是在sd卡之類的話构韵,步驟基本一致周蹭,都是首先得到我們的表格文件,然后得到工作簿對象疲恢,對其進行操作凶朗。有需要jxl包的朋友可自行度娘下載,也可以私信我显拳。