读取excel的两种方式
来源:互联网 发布:青岛seo外包服务 编辑:程序博客网 时间:2024/05/29 05:56
一、jxl(excel2003)需要jxl包
兼容性较差,代码如下:
private List<Type> readExcel(File file) throws Exception {
new ResultObject(true);
List<Type> typelist = new ArrayList<Contract>();
Workbook rwb = null;
String cellStr = null;
Type type= null;
// 创建输入流
// 获取Excel文件对象
if (file == null || !file.exists()) {
System.out.println(file.getName() + "不存在!");
}
InputStream stream = new FileInputStream(file);
rwb = Workbook.getWorkbook(stream);
// 获取文件的指定工作表 默认的第一个
Sheet sheet = rwb.getSheet(0);
// 行数(表头的目录不需要,从1开始)
for (int i = 1; i < sheet.getRows(); i++) {
// 创建一个对象对应一行, 用来存储每一列的值
type=new Type();
// 列数
contract.setRowNum("" + (i + 1));
cellStr = sheet.getCell(0, i).getContents().trim();//第一列数据
type.setContent(cellStr );
typelist .add(type);
}
stream.close();
rwb.close();
return typelist ;
}
将type换成自己的实体类即可获得对象。
二、poi方式(兼容2003与2007)需要poi包
代码是以前保存的别人代码,很实用,拿来用一下。
public List<String[]> getAllData(int sheetIndex){
int columnNum = 0;
Sheet sheet = wb.getSheetAt(sheetIndex);
if(sheet.getRow(0)!=null){
columnNum = sheet.getRow(0).getLastCellNum()-sheet.getRow(0).getFirstCellNum();
}
if(columnNum>0){
for(Row row:sheet){
String[] singleRow = new String[columnNum];
int n = 0;
for(int i=0;i<columnNum;i++){
Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK);
switch(cell.getCellType()){
case Cell.CELL_TYPE_BLANK:
singleRow[n] = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
singleRow[n] = Boolean.toString(cell.getBooleanCellValue());
break;
//数值
case Cell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){
singleRow[n] = String.valueOf(cell.getDateCellValue());
}else{
cell.setCellType(Cell.CELL_TYPE_STRING);
String temp = cell.getStringCellValue();
//判断是否包含小数点,如果不含小数点,则以字符串读取,如果含小数点,则转换为Double类型的字符串
if(temp.indexOf(".")>-1){
singleRow[n] = String.valueOf(new Double(temp)).trim();
}else{
singleRow[n] = temp.trim();
}
}
break;
case Cell.CELL_TYPE_STRING:
singleRow[n] = cell.getStringCellValue().trim();
break;
case Cell.CELL_TYPE_ERROR:
singleRow[n] = "";
break;
case Cell.CELL_TYPE_FORMULA:
cell.setCellType(Cell.CELL_TYPE_STRING);
singleRow[n] = cell.getStringCellValue();
if(singleRow[n]!=null){
singleRow[n] = singleRow[n].replaceAll("#N/A","").trim();
}
break;
default:
singleRow[n] = "";
break;
}
n++;
}
if("".equals(singleRow[0])){continue;}//如果第一行为空,跳过
dataList.add(singleRow);
}
}
return dataList;
}
- Java读取excel的两种方式
- 读取excel的两种方式
- Java读取Excel的两种方式方式介绍
- excel上传的两种方式(保存到服务器并读取/直接读取内容)
- POI读取Excel方式两种遍历方式
- C#读取Excel数据两种方式性能对比
- C#读取Excel数据两种方式性能对比
- delphi读取excel的两种方法
- 读取五种格式的配置文件(xml(两种方式),txt,excel,csv,json)
- java POI读取Excel时Files 与 InputStreams两种方式的比较
- 导出excel的两种方式
- datagridview 导出excel的两种方式
- java创建excel的两种方式
- poi导出Excel的两种方式
- java创建excel的两种方式
- pb生成excel的两种方式
- Flex读取XML的两种方式
- 读取xml Rss 的两种方式
- 机器学习实战-决策树
- 同步与异步,阻塞与非阻塞
- 【JavaScript】JavaScript中的replaceAll
- 如何在eclipse中使用java8编译
- 永久修改Jenkins启动端口的一种解决方法
- 读取excel的两种方式
- cocos2d-x性能优化的那些事
- mongodb 知识大搜集
- linux下sqlite3可视化工具 - [Android]
- Java 中多线程的实现方法之Thread和Runnable
- 通过设备名查询硬盘的Host Channel Id Lun
- python使用mysql数据库
- 网络爬虫基本原理(二)
- iOS 获取当前时间