java读取excel文件
java读取excel文件有相应的插件:jxl、easyexcel、poi
今天来讲jxl与easyexcel的实战!
jxl读取excel,只能是2003版的excel 读取2007 版的excel会报错
此时,如果你的excel是07版的,那么可以另存为03版的

jxl的应用
1.引入jar包
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
2.创建一个excel对应的实体类,类的属性对应excel的列(我这里起名为Demo)
class Demo {
private String url;
private String phone;
private String contract_id;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getContract_id() {
return contract_id;
}
public void setContract_id(String contract_id) {
this.contract_id = contract_id;
}
}
3.写读取方法(将excel数据转为list对象,以便对此处理)
public List readExcel(File file) {
try {
// 创建输入流,读取Excel
InputStream is = new FileInputStream(file.getAbsolutePath());
// jxl提供的Workbook类
Workbook wb = Workbook.getWorkbook(is);
// Excel的页签数量
int sheet_size = wb.getNumberOfSheets();
for (int index = 0; index < sheet_size; index++) {
List<Demo> outerList = Lists.newArrayList();
// 每个页签创建一个Sheet对象
Sheet sheet = wb.getSheet(index);
// sheet.getRows()返回该页的总行数
for (int i = 1; i < sheet.getRows(); i++) {
// sheet.getColumns()返回该页的总列数
Demo Demo = new Demo();
Demo.setContract_id(sheet.getCell(0, i).getContents());
Demo.setPhone(sheet.getCell(2, i).getContents());
Demo.setUrl(sheet.getCell(1, i).getContents());
outerList.add(Demo);
}
return outerList;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
esayexcel的应用
easyexcel使用起来更方便了,代码也更简洁了,其实相当于把一些方法给封装好,我们直接调用即可。
1.导入jar包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
2.建立实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PhoneAttachExcel{
@ExcelProperty(index = 0,value = "联络标识")
private String contract_id;
@ExcelProperty(index = 1,value = "录音地址")
private String url;
// 这个参数没有用到 存放什么都行
@ExcelProperty(index = 2,value = "手机号")
private String phone;
}
3.写一个类集成AnalysisEventListener,泛型填写步骤2创建的entity,重写invoke方法
public class ReadExcelUtil extends AnalysisEventListener<PhoneAttachExcel> {
// 定义一个list,存放excel解读出来的数据
List<PhoneAttachExcel> list =new ArrayList<>();
// 解析完一行,就会执行这个方法
@Override
public void invoke(PhoneAttachExcel data, AnalysisContext context) {
list.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
4.应用
public class Test {
public static void main(String[] args) {
ReadExcelUtil readExcelUtil = new ReadExcelUtil();
File file = new File("D:/lldizhi1.xls");
EasyExcel.read(file,ReadExcelUtil.class,readExcelUtil)
.sheet()
.headRowNumber(1)
.doRead();
List<PhoneAttachExcel> list = readExcelUtil.list;
}
}
距离上一次写博客,既然还是2个月钱,我的knowledge呀~~~
知识只有学到自己脑子里,才是自己的
啥都一样,靠别人靠不来
所有的所有,只能靠自己!