android读取excel文件第三方类库都有哪些
2016-04-10 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517181
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
目前应用比较多的处理Excel的类库主要有两种JXL 和POI。
都是开源项目,POI是apache下的子项目,经过研究和比较觉得POI更新更快一些。
到目前为止已经支持Excel2007版本了,不过目前也是3.5的beta4版以上才支持。JXL貌似还不行,但是个人觉得在使用上JXL简单一些。
另外JXL还有一个小问题需要注意一下在读取Excel文件是单次读不可以超过10000行,否则会溢出。经过试验9999可以,10000就不行了,不知道jxl为什么要控制在这个数。
因此如果兄弟们需要单次读取大数据量的时候需要手工处理下,分次读取就可以了。
因此建议处理EXCEL97-2003时可选用JXL,处理2007版本可选择POI,
各种用法四处都有这里只贴上JXL读取Excel97-03和POI读取Excel2007的代码:
public List<FSNInfo> readExcel07(String filepath) throws IOException{
List<Info> fsnList = new ArrayList<Info>(10);
//取得excel
XSSFWorkbook xwb = new XSSFWorkbook(filepath);
//取得Excel的第一个sheet;
XSSFSheet sheet = xwb.getSheetAt(0);
XSSFRow row;
//遍历sheet的所有行,前两个单元格,设置为Info的属性,放入ArrayList返回
for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {
Info fsn;
row = sheet.getRow(i);
fsn.set1(row.getCell(0).toString());
fsn.set2(row.getCell(1).toString());
fsnList.add(fsn);
}
return fsnList;
}
public List<Info> readExcelSubRecord(int start,int len) {
if(wb == null)
return null;
List<Info> list = new ArrayList<Info>(10);
try {
Workbook book = wb;
Sheet se = book.getSheet(0);
int rownum = start+len;
for (int i = start; i < rownum; i++) {
Info fsn;
fsn.set1(se.getCell(0, i).getContents());
fsn.set2(se.getCell(1, i).getContents());
list.add(fsn);
}
book.close();
} catch (Exception e) {
logger.error("Parse excel97-2003 error: "+e);
return null;
}
return list;
}
都是开源项目,POI是apache下的子项目,经过研究和比较觉得POI更新更快一些。
到目前为止已经支持Excel2007版本了,不过目前也是3.5的beta4版以上才支持。JXL貌似还不行,但是个人觉得在使用上JXL简单一些。
另外JXL还有一个小问题需要注意一下在读取Excel文件是单次读不可以超过10000行,否则会溢出。经过试验9999可以,10000就不行了,不知道jxl为什么要控制在这个数。
因此如果兄弟们需要单次读取大数据量的时候需要手工处理下,分次读取就可以了。
因此建议处理EXCEL97-2003时可选用JXL,处理2007版本可选择POI,
各种用法四处都有这里只贴上JXL读取Excel97-03和POI读取Excel2007的代码:
public List<FSNInfo> readExcel07(String filepath) throws IOException{
List<Info> fsnList = new ArrayList<Info>(10);
//取得excel
XSSFWorkbook xwb = new XSSFWorkbook(filepath);
//取得Excel的第一个sheet;
XSSFSheet sheet = xwb.getSheetAt(0);
XSSFRow row;
//遍历sheet的所有行,前两个单元格,设置为Info的属性,放入ArrayList返回
for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {
Info fsn;
row = sheet.getRow(i);
fsn.set1(row.getCell(0).toString());
fsn.set2(row.getCell(1).toString());
fsnList.add(fsn);
}
return fsnList;
}
public List<Info> readExcelSubRecord(int start,int len) {
if(wb == null)
return null;
List<Info> list = new ArrayList<Info>(10);
try {
Workbook book = wb;
Sheet se = book.getSheet(0);
int rownum = start+len;
for (int i = start; i < rownum; i++) {
Info fsn;
fsn.set1(se.getCell(0, i).getContents());
fsn.set2(se.getCell(1, i).getContents());
list.add(fsn);
}
book.close();
} catch (Exception e) {
logger.error("Parse excel97-2003 error: "+e);
return null;
}
return list;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询