Part One 前情提要
本文是使用AndroidStudio来编写代码,来实现对Excel表格中的数据读取。
实际工作开发中我们可能需要从Excel表格中读取数据,以实现实际需求。比如:
1.将Excel表格中的数据导入数据库中(可能不是完全按照表格中的现有数据格式)
2.将Excel表格中的数据读出来,进行一些操作只后,再写回Excel表格中
3.单纯的读取数据
… …
总会有那么一天可能你也要和Excel打打交道,所以现在如果你有时间可以先来学习一下,了解一下。充实一下自己。
注:突然需要是用Excel,主要也是因为最近公司计划玩一玩大数据。所以这几天需要使用Excel造一些假数据(因为老板们不熟悉数据库,我总不能给他们一人一个sql吧),所以也算是没有办法,只能把数据填写到Excel中了。
Part Two 主角登场
操作步骤:
1.下载读取Excel需要引用的jar包
下载jar包:jxl.jar,点击下载jxl.jar
2.下载好需要的jar包以后,接下来我们使用AndroidStudio创建一个Project。创建好了以后,我们下载下来的jar包添加到项目中。
添加结果如下:
3.接下来就是使用这个jar中的工具类来进行,Excel表格的操作了。
对Excel表格操作主要使用到jar中的3个类
jxl.Workbook Excel文件类实体代码示例:
// “data_table.xls” 相对路径或者绝对路径均可以
Workbook book = Workbook.getWorkbook(new File(“data_table.xls”));
// “data_table.xls” android项目中assets目录中 文件名
Workbook book = Workbook.getWorkbook(assetManager.open(“data_table.xls”));jxl.Sheet 表格类
代码示例:
//获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,….)
Sheet sheet = book.getSheet(0);jxl.Cell 单元格类
代码示例:
// 获取第0行第0列的一个单元格(表格左上角第一个单元格)
Cell cell = sheet.getCell(0, 0); //(列,行)
4.Workbook类 方法
- 创建一个Excel文件
createWorkbook()- 获取(打开)一个Excel文件
getWorkbook()- 查某一个或所有Sheet
getSheets(int index) // 根据索引 得到一个Sheet
getSheets(String sheetName) // 根据Sheet名称 得到一个Sheet
getSheets() // 所有Sheet- 查找一个Cell
findCellByName(String name)
getCell(String name)- 获取符合条件的Cell,包装成了一个Range类型了
Range[] findByName(String name)- 其他操作
5.Sheet类 方法
- 获取某一个Cell
- 获取某一列的所有Cell
- 获取某一行的所有Cell
- 获取符合条件的所有Cell
- 获取某一个CellView,CellView 用来控制单元格的格式
6.Cell类 方法
getRow 所在行
getColumn 所在列
getType Cell类型
isHidden 是否被隐藏
getContents 获取内容
getCellFormat 获取单元格格式
getCellFeatures 获取单元格特征
Part Three 示例代码
代码中的User的属性字段就是表格中的titles
Activity 中:AssetManager assetManager = getAssets();
// 读取用户表
public List<User> getUserFromSheet() {
List<User> users = new ArrayList<>();
int i;
Workbook book;
Sheet sheet;
Cell U_ID, U_NAME, U_NICK_NAME, U_AGE, U_SEX, U_PHONE_NUM, U_EMAIL, U_PHONE_TYPE, SHOPPING_HISTORY_ID;
try {
//hello.xls为要读取的excel文件名
book = Workbook.getWorkbook(assetManager.open("data_table.xls"));
//获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
sheet = book.getSheet(0);
//获取左上角的单元格
U_ID = sheet.getCell(0, 0);
i = 1;
while (i < 102) {
//获取每一行的单元格
U_ID = sheet.getCell(0, i);//(列,行)
U_NAME = sheet.getCell(1, i);
U_NICK_NAME = sheet.getCell(2, i);
U_AGE = sheet.getCell(3, i);
U_SEX = sheet.getCell(4, i);
U_PHONE_NUM = sheet.getCell(5, i);
U_EMAIL = sheet.getCell(6, i);
U_PHONE_TYPE = sheet.getCell(7, i);
SHOPPING_HISTORY_ID = sheet.getCell(8, i);
User user = new User();
user.setU_ID(Integer.parseInt(U_ID.getContents()));
user.setU_NAME(U_NAME.getContents());
user.setU_NICK_NAME(U_NICK_NAME.getContents());
user.setU_AGE(Integer.parseInt(U_AGE.getContents()));
user.setU_SEX(U_SEX.getContents());
user.setU_PHONE_NUM(U_PHONE_NUM.getContents());
user.setU_EMAIL(U_EMAIL.getContents());
user.setU_PHONE_TYPE(U_PHONE_TYPE.getContents());
user.setSHOPPING_HISTORY_ID(Integer.parseInt(SHOPPING_HISTORY_ID.getContents()));
users.add(user);
i++;
}
book.close();
} catch (Exception e) {
}
return users;
}
Excel表格数据截图: