Browse Source

新增demo

pull/2077/head
Jiaju Zhuang 3 years ago
parent
commit
b9844658cd
  1. 1
      README.md
  2. 4
      src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
  3. 27
      src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java

1
README.md

@ -31,6 +31,7 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都
* 不建议夸大版本升级 尤其夸2个大版本 * 不建议夸大版本升级 尤其夸2个大版本
* 2+ 升级到 3+ * 2+ 升级到 3+
* 使用了自定义拦截器去修改样式的会出问题 * 使用了自定义拦截器去修改样式的会出问题
* 读的时候`invoke`里面抛出异常,不会再额外封装一层`ExcelAnalysisException`
* 大版本升级后建议相关内容重新测试下 * 大版本升级后建议相关内容重新测试下
## 人员招募 ## 人员招募

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

@ -45,7 +45,7 @@ public class ReadTest {
*/ */
@Test @Test
public void simpleRead() { public void simpleRead() {
// 写法1:JDK8+ ,不用额外写一个ReadListener // 写法1:JDK8+ ,不用额外写一个DemoDataListener
// since: 3.0.0-beta1 // since: 3.0.0-beta1
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
@ -57,7 +57,7 @@ public class ReadTest {
})).sheet().doRead(); })).sheet().doRead();
// 写法2: // 写法2:
// 匿名内部类 不用额外写一个ReadListener // 匿名内部类 不用额外写一个DemoDataListener
fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, DemoData.class, new ReadListener<DemoData>() { EasyExcel.read(fileName, DemoData.class, new ReadListener<DemoData>() {

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

@ -273,11 +273,17 @@ public class WriteTest {
imageDemoData.setUrl(new URL( imageDemoData.setUrl(new URL(
"https://raw.githubusercontent.com/alibaba/easyexcel/master/src/test/resources/converter/img.jpg")); "https://raw.githubusercontent.com/alibaba/easyexcel/master/src/test/resources/converter/img.jpg"));
// 这里演示 图片 不想顶格放 且占用2个单元格的情况 // 这里演示
// 需要额外放入文字
// 而且需要放入2个图片
// 第一个图片靠左
// 第二个靠右 而且要额外的占用他后面的单元格
WriteCellData<Void> writeCellData = new WriteCellData<>(); WriteCellData<Void> writeCellData = new WriteCellData<>();
imageDemoData.setWriteCellDataFile(writeCellData); imageDemoData.setWriteCellDataFile(writeCellData);
// 设置为空 代表当前单元格不需要写图片以外的数据 // 这里可以设置为 EMPTY 则代表不需要其他数据了
writeCellData.setType(CellDataTypeEnum.EMPTY); writeCellData.setType(CellDataTypeEnum.STRING);
writeCellData.setStringValue("额外的放一些文字");
// 可以放入多个图片 // 可以放入多个图片
List<ImageData> imageDataList = new ArrayList<>(); List<ImageData> imageDataList = new ArrayList<>();
ImageData imageData = new ImageData(); ImageData imageData = new ImageData();
@ -288,17 +294,30 @@ public class WriteTest {
// 图片类型 // 图片类型
imageData.setImageType(ImageType.PICTURE_TYPE_PNG); imageData.setImageType(ImageType.PICTURE_TYPE_PNG);
// 上 右 下 左 需要留空 // 上 右 下 左 需要留空
// 这个类似于 css 的 margin
// 这里实测 不能设置太大 超过单元格原始大小后 打开会提示修复。暂时未找到很好的解法。 // 这里实测 不能设置太大 超过单元格原始大小后 打开会提示修复。暂时未找到很好的解法。
imageData.setTop(5); imageData.setTop(5);
imageData.setRight(5); imageData.setRight(40);
imageData.setBottom(5); imageData.setBottom(5);
imageData.setLeft(5); imageData.setLeft(5);
// 放入第二个图片
imageData = new ImageData();
imageDataList.add(imageData);
writeCellData.setImageDataList(imageDataList);
imageData.setImage(FileUtils.readFileToByteArray(new File(imagePath)));
imageData.setImageType(ImageType.PICTURE_TYPE_PNG);
imageData.setTop(5);
imageData.setRight(5);
imageData.setBottom(5);
imageData.setLeft(50);
// 设置图片的位置 假设 现在目标 是 覆盖 当前单元格 和当前单元格右边的单元格 // 设置图片的位置 假设 现在目标 是 覆盖 当前单元格 和当前单元格右边的单元格
// 起点相对于当前单元格为0 当然可以不写 // 起点相对于当前单元格为0 当然可以不写
imageData.setRelativeFirstRowIndex(0); imageData.setRelativeFirstRowIndex(0);
imageData.setRelativeFirstColumnIndex(0); imageData.setRelativeFirstColumnIndex(0);
imageData.setRelativeLastRowIndex(0); imageData.setRelativeLastRowIndex(0);
// 前面3个可以不写 下面这个需要写 也就是 结尾 需要相对当前单元格 往右移动一格 // 前面3个可以不写 下面这个需要写 也就是 结尾 需要相对当前单元格 往右移动一格
// 也就是说 这个图片会覆盖当前单元格和 后面的那一格
imageData.setRelativeLastColumnIndex(1); imageData.setRelativeLastColumnIndex(1);
// 写入数据 // 写入数据

Loading…
Cancel
Save