Browse Source

升级新版本,修复bug,提供编辑工具,提升模型转换性能

developing
jipengfei.jpf 6 years ago
parent
commit
1ec84746de
  1. 151
      README.md

151
README.md

@ -22,7 +22,7 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
``` ```
# 最新版本 # 最新版本
## VERSION : 1.1.1 ### VERSION : 1.1.2-beat1
# 维护者 # 维护者
姬朋飞(玉霄) 姬朋飞(玉霄)
@ -31,60 +31,115 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
## 读Excel ## 读Excel
测试代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/ReadTest.java](/src/test/java/com/alibaba/easyexcel/test/ReadTest.java)
读07版小于1000行数据返回List<List<String>>
``` ```
public void noModelMultipleSheet() { List<Object> data = EasyExcelFactory.read(inputStream, new Sheet(1, 0));
InputStream inputStream = getInputStream("2007NoModelMultipleSheet.xlsx");
try {
ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null,
new AnalysisEventListener<List<String>>() {
@Override
public void invoke(List<String> object, AnalysisContext context) {
System.out.println(
"当前sheet:" + context.getCurrentSheet().getSheetNo() + " 当前行:" + context.getCurrentRowNum()
+ " data:" + object);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
});
reader.read();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
``` ```
读07版小于1000行数据返回List<? extend BaseRowModel>
```
List<Object> data = EasyExcelFactory.read(inputStream, new Sheet(2, 1,JavaModel.class));
```
读07版大于1000行数据返回List<List<String>>
```
ExcelListener excelListener = new ExcelListener();
EasyExcelFactory.readBySax(inputStream, new Sheet(1, 1), excelListener);
```
读07版大于1000行数据返回List<? extend BaseRowModel>
```
ExcelListener excelListener = new ExcelListener();
EasyExcelFactory.readBySax(inputStream, new Sheet(2, 1,JavaModel.class), excelListener);
```
读03版方法同上
## 写Excel ## 写Excel
测试代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/test/WriteTest.java](/src/test/java/com/alibaba/easyexcel/test/WriteTest.java)
没有模板
``` ```
@Test OutputStream out = new FileOutputStream("/Users/jipengfei/2007.xlsx");
public void test1() throws FileNotFoundException { ExcelWriter writer = EasyExcelFactory.getWriter(out);
OutputStream out = new FileOutputStream("/Users/jipengfei/78.xlsx");
try { //写第一个sheet, sheet1 数据全是List<String> 无模型映射关系
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX); Sheet sheet1 = new Sheet(1, 3);
//写第一个sheet, sheet1 数据全是List<String> 无模型映射关系 sheet1.setSheetName("第一个sheet");
Sheet sheet1 = new Sheet(1, 0,ExcelPropertyIndexModel.class); //设置列宽 设置每列的宽度
writer.write(getData(), sheet1); Map columnWidth = new HashMap();
writer.finish(); columnWidth.put(0,10000);columnWidth.put(1,40000);columnWidth.put(2,10000);columnWidth.put(3,10000);
} catch (Exception e) { sheet1.setColumnWidthMap(columnWidth);
e.printStackTrace(); sheet1.setHead(createTestListStringHead());
} finally { //or 设置自适应宽度
try { //sheet1.setAutoWidth(Boolean.TRUE);
out.close(); writer.write1(createTestListObject(), sheet1);
} catch (IOException e) {
e.printStackTrace(); //写第二个sheet sheet2 模型上打有表头的注解,合并单元格
} Sheet sheet2 = new Sheet(2, 3, JavaModel1.class, "第二个sheet", null);
} sheet2.setTableStyle(createTableStyle());
} writer.write(createTestListJavaMode(), sheet2);
//写第三个sheet包含多个table情况
Sheet sheet3 = new Sheet(3, 0);
sheet3.setSheetName("第三个sheet");
Table table1 = new Table(1);
table1.setHead(createTestListStringHead());
writer.write1(createTestListObject(), sheet3, table1);
//写sheet2 模型上打有表头的注解
Table table2 = new Table(2);
table2.setTableStyle(createTableStyle());
table2.setClazz(JavaModel1.class);
writer.write(createTestListJavaMode(), sheet3, table2);
//关闭资源
writer.finish();
out.close();
```
有模板
``` ```
InputStream inputStream = new BufferedInputStream(new FileInputStream("/Users/jipengfei/temp.xlsx"));
OutputStream out = new FileOutputStream("/Users/jipengfei/2007.xlsx");
ExcelWriter writer = EasyExcelFactory.getWriterWithTemp(inputStream,out,ExcelTypeEnum.XLSX,true);
//写第一个sheet, sheet1 数据全是List<String> 无模型映射关系
Sheet sheet1 = new Sheet(1, 3);
sheet1.setSheetName("第一个sheet");
//设置列宽 设置每列的宽度
Map columnWidth = new HashMap();
columnWidth.put(0,10000);columnWidth.put(1,40000);columnWidth.put(2,10000);columnWidth.put(3,10000);
sheet1.setColumnWidthMap(columnWidth);
sheet1.setHead(createTestListStringHead());
//or 设置自适应宽度
//sheet1.setAutoWidth(Boolean.TRUE);
writer.write1(createTestListObject(), sheet1);
//写第二个sheet sheet2 模型上打有表头的注解,合并单元格
Sheet sheet2 = new Sheet(2, 3, JavaModel1.class, "第二个sheet", null);
sheet2.setTableStyle(createTableStyle());
writer.write(createTestListJavaMode(), sheet2);
//写第三个sheet包含多个table情况
Sheet sheet3 = new Sheet(3, 0);
sheet3.setSheetName("第三个sheet");
Table table1 = new Table(1);
table1.setHead(createTestListStringHead());
writer.write1(createTestListObject(), sheet3, table1);
//写sheet2 模型上打有表头的注解
Table table2 = new Table(2);
table2.setTableStyle(createTableStyle());
table2.setClazz(JavaModel1.class);
writer.write(createTestListJavaMode(), sheet3, table2);
//关闭资源
writer.finish();
out.close();
```
# web下载实例写法 # web下载实例写法
package com.alibaba.china.pte.web.seller.dingtalk.rpc; package com.alibaba.china.pte.web.seller.dingtalk.rpc;

Loading…
Cancel
Save