Browse Source

修改demo 统一加上final

developing
Jiaju Zhuang 4 years ago
parent
commit
11d1702431
  1. 44
      src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
  2. 136
      src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java

44
src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java

@ -27,6 +27,7 @@ import com.alibaba.fastjson.JSON;
*/ */
@Ignore @Ignore
public class ReadTest { public class ReadTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ReadTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ReadTest.class);
/** /**
@ -48,11 +49,17 @@ public class ReadTest {
// 写法2: // 写法2:
fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).build(); ExcelReader excelReader = null;
ReadSheet readSheet = EasyExcel.readSheet(0).build(); try {
excelReader.read(readSheet); excelReader = EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).build();
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的 ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.finish(); excelReader.read(readSheet);
} finally {
if (excelReader != null) {
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}
}
} }
/** /**
@ -90,16 +97,23 @@ public class ReadTest {
// 读取部分sheet // 读取部分sheet
fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
ExcelReader excelReader = EasyExcel.read(fileName).build(); ExcelReader excelReader = null;
// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener try {
ReadSheet readSheet1 = excelReader = EasyExcel.read(fileName).build();
EasyExcel.readSheet(0).head(DemoData.class).registerReadListener(new DemoDataListener()).build();
ReadSheet readSheet2 = // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener
EasyExcel.readSheet(1).head(DemoData.class).registerReadListener(new DemoDataListener()).build(); ReadSheet readSheet1 =
// 这里注意 一定要把sheet1 sheet2 一起传进去,不然有个问题就是03版的excel 会读取多次,浪费性能 EasyExcel.readSheet(0).head(DemoData.class).registerReadListener(new DemoDataListener()).build();
excelReader.read(readSheet1, readSheet2); ReadSheet readSheet2 =
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的 EasyExcel.readSheet(1).head(DemoData.class).registerReadListener(new DemoDataListener()).build();
excelReader.finish(); // 这里注意 一定要把sheet1 sheet2 一起传进去,不然有个问题就是03版的excel 会读取多次,浪费性能
excelReader.read(readSheet1, readSheet2);
} finally {
if (excelReader != null) {
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}
}
} }
/** /**

136
src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java

@ -40,6 +40,7 @@ import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy
*/ */
@Ignore @Ignore
public class WriteTest { public class WriteTest {
/** /**
* 最简单的写 * 最简单的写
* <p> * <p>
@ -58,11 +59,17 @@ public class WriteTest {
// 写法2 // 写法2
fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx"; fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 需要指定写用哪个class去写 // 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build(); ExcelWriter excelWriter = null;
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build(); try {
excelWriter.write(data(), writeSheet); excelWriter = EasyExcel.write(fileName, DemoData.class).build();
/// 千万别忘记finish 会帮忙关闭流 WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.finish(); excelWriter.write(data(), writeSheet);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
} }
/** /**
@ -141,48 +148,64 @@ public class WriteTest {
public void repeatedWrite() { public void repeatedWrite() {
// 方法1 如果写到同一个sheet // 方法1 如果写到同一个sheet
String fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx"; String fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 需要指定写用哪个class去写 ExcelWriter excelWriter = null;
ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build(); try {
// 这里注意 如果同一个sheet只要创建一次 // 这里 需要指定写用哪个class去写
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build(); excelWriter = EasyExcel.write(fileName, DemoData.class).build();
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来 // 这里注意 如果同一个sheet只要创建一次
for (int i = 0; i < 5; i++) { WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据 // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
List<DemoData> data = data(); for (int i = 0; i < 5; i++) {
excelWriter.write(data, writeSheet); // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
List<DemoData> data = data();
excelWriter.write(data, writeSheet);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
} }
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
// 方法2 如果写到不同的sheet 同一个对象 // 方法2 如果写到不同的sheet 同一个对象
fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx"; fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 指定文件 try {
excelWriter = EasyExcel.write(fileName, DemoData.class).build(); // 这里 指定文件
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面 excelWriter = EasyExcel.write(fileName, DemoData.class).build();
for (int i = 0; i < 5; i++) { // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样 for (int i = 0; i < 5; i++) {
writeSheet = EasyExcel.writerSheet(i, "模板" + i).build(); // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据 WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).build();
List<DemoData> data = data(); // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
excelWriter.write(data, writeSheet); List<DemoData> data = data();
excelWriter.write(data, writeSheet);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
} }
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
// 方法3 如果写到不同的sheet 不同的对象 // 方法3 如果写到不同的sheet 不同的对象
fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx"; fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 指定文件 try {
excelWriter = EasyExcel.write(fileName).build(); // 这里 指定文件
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面 excelWriter = EasyExcel.write(fileName).build();
for (int i = 0; i < 5; i++) { // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class 实际上可以一直变 for (int i = 0; i < 5; i++) {
writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(DemoData.class).build(); // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class 实际上可以一直变
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据 WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(DemoData.class).build();
List<DemoData> data = data(); // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
excelWriter.write(data, writeSheet); List<DemoData> data = data();
excelWriter.write(data, writeSheet);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
} }
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
} }
/** /**
@ -302,7 +325,7 @@ public class WriteTest {
// 背景设置为红色 // 背景设置为红色
headWriteCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex()); headWriteCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
WriteFont headWriteFont = new WriteFont(); WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontHeightInPoints((short)20); headWriteFont.setFontHeightInPoints((short) 20);
headWriteCellStyle.setWriteFont(headWriteFont); headWriteCellStyle.setWriteFont(headWriteFont);
// 内容的策略 // 内容的策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
@ -312,7 +335,7 @@ public class WriteTest {
contentWriteCellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); contentWriteCellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
WriteFont contentWriteFont = new WriteFont(); WriteFont contentWriteFont = new WriteFont();
// 字体大小 // 字体大小
contentWriteFont.setFontHeightInPoints((short)20); contentWriteFont.setFontHeightInPoints((short) 20);
contentWriteCellStyle.setWriteFont(contentWriteFont); contentWriteCellStyle.setWriteFont(contentWriteFont);
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现 // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
HorizontalCellStyleStrategy horizontalCellStyleStrategy = HorizontalCellStyleStrategy horizontalCellStyleStrategy =
@ -362,18 +385,24 @@ public class WriteTest {
String fileName = TestFileUtil.getPath() + "tableWrite" + System.currentTimeMillis() + ".xlsx"; String fileName = TestFileUtil.getPath() + "tableWrite" + System.currentTimeMillis() + ".xlsx";
// 这里直接写多个table的案例了,如果只有一个 也可以直一行代码搞定,参照其他案例 // 这里直接写多个table的案例了,如果只有一个 也可以直一行代码搞定,参照其他案例
// 这里 需要指定写用哪个class去写 // 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build(); ExcelWriter excelWriter = null;
// 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了 try {
WriteSheet writeSheet = EasyExcel.writerSheet("模板").needHead(Boolean.FALSE).build(); EasyExcel.write(fileName, DemoData.class).build();
// 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要 // 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了
WriteTable writeTable0 = EasyExcel.writerTable(0).needHead(Boolean.TRUE).build(); WriteSheet writeSheet = EasyExcel.writerSheet("模板").needHead(Boolean.FALSE).build();
WriteTable writeTable1 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).build(); // 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要
// 第一次写入会创建头 WriteTable writeTable0 = EasyExcel.writerTable(0).needHead(Boolean.TRUE).build();
excelWriter.write(data(), writeSheet, writeTable0); WriteTable writeTable1 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).build();
// 第二次写如也会创建头,然后在第一次的后面写入数据 // 第一次写入会创建头
excelWriter.write(data(), writeSheet, writeTable1); excelWriter.write(data(), writeSheet, writeTable0);
/// 千万别忘记finish 会帮忙关闭流 // 第二次写如也会创建头,然后在第一次的后面写入数据
excelWriter.finish(); excelWriter.write(data(), writeSheet, writeTable1);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
} }
/** /**
@ -399,8 +428,7 @@ public class WriteTest {
/** /**
* 自动列宽(不太精确) * 自动列宽(不太精确)
* <p> * <p>
* 这个目前不是很好用比如有数字就会导致换行而且长度也不是刚好和实际长度一致 所以需要精确到刚好列宽的慎用 当然也可以自己参照 * 这个目前不是很好用比如有数字就会导致换行而且长度也不是刚好和实际长度一致 所以需要精确到刚好列宽的慎用 当然也可以自己参照 {@link LongestMatchColumnWidthStyleStrategy}重新实现.
* {@link LongestMatchColumnWidthStyleStrategy}重新实现.
* <p> * <p>
* poi 自带{@link SXSSFSheet#autoSizeColumn(int)} 对中文支持也不太好目前没找到很好的算法 有的话可以推荐下 * poi 自带{@link SXSSFSheet#autoSizeColumn(int)} 对中文支持也不太好目前没找到很好的算法 有的话可以推荐下
* *

Loading…
Cancel
Save