android 讀寫 excel 檔案
需求背景:最近在做專案過程中,需要讀取 excel 檔案,excel檔案可以來自使用者插在android裝置上的外接u盤,也可以是儲存在專案assets、 raw裡面。
資料參考:查閱了很多相關資料,讀取外接u盤主要用到了android 讀取usb檔案的第三方開源庫
[github](
用到的jar檔案 jar
讀寫asset raw檔案也可以用jxl.jar
本文將從以下兩個方面介紹excel檔案的讀寫
讀寫外接 u 盤檔案
讀寫android 專案內assets raw 下的 excel 檔案
android 讀寫 u 盤 excel 檔案
首先我們需要註冊廣播監聽外接u盤的插入和拔出
//監聽otg插入 拔出
intentfilter usbdevicestatefilter = new intentfilter(); usbdevicestatefilter.addaction(usbmanager.action_usb_device_attached);
usbdevicestatefilter.addaction(usbmanager.action_usb_device_detached);
registerreceiver(musbreceiver, usbdevicestatefilter);
//註冊監聽自定義廣播
intentfilter filter = new intentfilter(action_usb_permission);
registerreceiver(musbreceiver, filter);
然後重寫onreceive()方法
private broadcastreceiver musbreceiver = new broadcastreceiver() else
} else
break;
case usbmanager.action_usb_device_attached://接收到儲存裝置插入廣播
usbdevice device_add = intent.getparcelableextra(usbmanager.extra_device);
if (device_add != null) else
break;
case usbmanager.action_usb_device_detached://接收到儲存裝置拔出廣播
usbdevice device_remove = intent.getparcelableextra(usbmanager.extra_device);
if (device_remove != null)
}接下來我們就需要對選擇的excel檔案進行讀取操作
public static void readfromexcel(final usbfile fileabsolutepath, final handler handler) throws ioexception catch (ioexception e)
logger.d("總表頁數為:" + workbook.getnumberofsheets());// 獲取表頁數
sheet sheet = workbook.getsheetat(0);
int sheetnum = workbook.getnumberofsheets();
int sheetrows = sheet.getlastrownum();
logger.d("the num of sheets is " + sheetnum);
logger.d("the name of sheet is " + sheet.getsheetname());
logger.d("total rows is 行=" + sheetrows);
// sheet sheet = workbook.getsheetat(1);
int rownum = sheet.getlastrownum();// 獲取總行數
logger.d(rownum);
double sum = 0;
listsubsidyentities = new arraylist();
for (int i = 1; i <= rownum; i++) }}
for (int j = 0; j < subsidyentities.size(); j++)
message msg = message.obtain();
msg.arg1 = rownum;
msg.arg2 = (int) sum;
msg.what = constants.msg_get_data_from_excel_success;
handler.sendmessage(msg);
// bigdecimal big = new bigdecimal(celldata.getnumericcellvalue());//將科學計數法表示的資料轉化為string型別
// logger.d("\t" + string.valueof(big));
}}).start();
}當傳入excel檔名後需要對當前檔案是excel 2003還是excel 2007進行處理
/*** @param filename
* @return
* @throws ioexception
* @title: getweebwork
* @description: todo(根據傳入的檔名獲取工作簿物件(workbook))
*/public static workbook getweebwork(usbfile filename) throws ioexception else if (".xlsx".equals(filetype.trim().tolowercase()))
}return workbook;
}通過handler訊息處理機制,將我們在子執行緒獲取到的excel檔案在主線程進行處理
private class myhandler extends handler
@override
public void handlemessage(message msg)
switch (msg.what) }}
最後我們在頁面銷毀時,登出廣播,關閉usb裝置
@override
protected void ondestroy()
if (sb != null)
if (storagedevices != null) }}
android 讀取assets 下的excel檔案
在我們做專案過程中,專案內測時,需要白名單控制,白名單實現的一種方案就是把使用者的登入名**號碼作為白名單,如果不在白名單內則提示無法登入。此時,我們的白名單使用者列表儲存在excel檔案中,我們可以把excel檔案儲存到assets下進行讀取。
首先需要把編輯好的excel檔案放到main目錄下的assets下。(如果位置放錯則讀取不到)
然後通過子執行緒來讀取excel檔案內容
public static void getwhitelist(final context context, final handler handler)
workbook.close();
} catch (exception e)
message msg = message.obtain();
msg.obj = whiteslist;
msg.what = neturls.msg_get_white_list_succ;
// 傳送這個訊息到訊息佇列中
handler.sendmessage(msg);
}}).start();
}這裡我們提前知道了excel檔案裡面的內容,我這裡只有乙個**號碼列,所以要定義好相應的實體類 whitelistinfo,將我們讀取到的所以**號碼儲存到list集合當中。
在主線程獲取到我們讀取的內容
EasyML Python讀寫excel檔案
開啟anaconda prompt控制台輸入pip install pandas xlrd pymysql sqlalchemy cx oracle i 其中xlrd為讀取excel檔案的必備庫檔案,sqlalchemy pymysql cx oracle為讀取sql資料庫的必備庫檔案 資料源自訊飛...
一文搞定Qt讀寫excel以及qt讀寫xml資料
最終的實現效果圖 rc icons logo.ico.pro檔案同級目錄下加入 logo.ico 圖示檔案,執行檔案,檔案的圖示就被寫入軟體 ui首先拖幾個控制項出來 lineedit pushbutton textedit label 等 命名就不在細說了 最後的打包語句是 c users adm...
Excel檔案讀寫
對於c s模式的開發,讀寫excel檔案是很經常的事情,這裡我介紹一下通過oledb方式對excel檔案進行讀寫的方法,相比通過操作單元格的方式,應該在效能和效率上有很大優勢。首先 提供乙個excel檔案操作引擎類。using system using system.data using syste...