这两天一直在玩些小工具,今天整了下阿里巴巴的easyExcel,下面是案例:
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.read.context.AnalysisContext;
import com.alibaba.excel.read.event.AnalysisEventListener;
import com.alibaba.excel.support.ExcelTypeEnum;
import org.junit.Test;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class TestExcel {
@Test
public void testRead() throws FileNotFoundException {
InputStream inputStream =getInputStream("C:\\Users\\LiGe\\Desktop\\test.xls");
try {
ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, new AnalysisEventListener() {
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
System.out.println("当前sheet"+analysisContext.getCurrentSheet().getSheetNo()+ " 当前行:" + analysisContext.getCurrentRowNum()
+ " data:" + o);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
});
reader.read();
}catch (Exception e){
e.printStackTrace();
}finally {
try {
inputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
@Test
public void testWriter() throws FileNotFoundException {
OutputStream out = new FileOutputStream("C:\\Users\\LiGe\\Desktop\\test.xls");
try {
ExcelWriter writer = new ExcelWriter(out,ExcelTypeEnum.XLS);
//写第一个sheet
Sheet sheet = new Sheet(2,3,ImportInfo.class);
writer.write(getDate(),sheet);
for (ImportInfo in: getDate()
) {
System.out.println(in.getName());
}
writer.finish();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public List<ImportInfo> getDate(){
List<ImportInfo> list = new ArrayList<ImportInfo>();
ImportInfo info = new ImportInfo();
info.setAge(12);
info.setName("zhangsan");
info.setEmail("11111@qq.com");
ImportInfo info1 = new ImportInfo();
info1.setAge(12);
info1.setName("zhangsan1");
info1.setEmail("11111@qq.com");
ImportInfo info2 = new ImportInfo();
info2.setAge(12);
info2.setName("zhangsan2");
info2.setEmail("11111@qq.com");
list.add(info);list.add(info1);list.add(info2);
return list;
}
private InputStream getInputStream(String fileName) {
try {
return new FileInputStream(new File(fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
上面是测试类,这是实体类:
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
public class ImportInfo extends BaseRowModel {
@ExcelProperty(index = 0)
private String name;
@ExcelProperty(index = 1)
private Integer age;
@ExcelProperty(index = 2)
private String email;
/*
通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列
作为Excel的模型对象,需要setter方法
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}