diff --git a/README.md b/README.md index f8fbe2e5..9edcc142 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都 * 不建议夸大版本升级 尤其夸2个大版本 * 2+ 升级到 3+ * 使用了自定义拦截器去修改样式的会出问题 + * 读的时候`invoke`里面抛出异常,不会再额外封装一层`ExcelAnalysisException` * 大版本升级后建议相关内容重新测试下 ## 人员招募 diff --git a/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java b/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java index faad0029..ea447719 100644 --- a/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java +++ b/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java @@ -45,7 +45,7 @@ public class ReadTest { */ @Test public void simpleRead() { - // 写法1:JDK8+ ,不用额外写一个ReadListener + // 写法1:JDK8+ ,不用额外写一个DemoDataListener // since: 3.0.0-beta1 String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 @@ -57,7 +57,7 @@ public class ReadTest { })).sheet().doRead(); // 写法2: - // 匿名内部类 不用额外写一个ReadListener + // 匿名内部类 不用额外写一个DemoDataListener fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, DemoData.class, new ReadListener() { diff --git a/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java b/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java index 12c56cc0..852bc280 100644 --- a/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java +++ b/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java @@ -273,11 +273,17 @@ public class WriteTest { imageDemoData.setUrl(new URL( "https://raw.githubusercontent.com/alibaba/easyexcel/master/src/test/resources/converter/img.jpg")); - // 这里演示 图片 不想顶格放 且占用2个单元格的情况 + // 这里演示 + // 需要额外放入文字 + // 而且需要放入2个图片 + // 第一个图片靠左 + // 第二个靠右 而且要额外的占用他后面的单元格 WriteCellData writeCellData = new WriteCellData<>(); imageDemoData.setWriteCellDataFile(writeCellData); - // 设置为空 代表当前单元格不需要写图片以外的数据 - writeCellData.setType(CellDataTypeEnum.EMPTY); + // 这里可以设置为 EMPTY 则代表不需要其他数据了 + writeCellData.setType(CellDataTypeEnum.STRING); + writeCellData.setStringValue("额外的放一些文字"); + // 可以放入多个图片 List imageDataList = new ArrayList<>(); ImageData imageData = new ImageData(); @@ -288,17 +294,30 @@ public class WriteTest { // 图片类型 imageData.setImageType(ImageType.PICTURE_TYPE_PNG); // 上 右 下 左 需要留空 + // 这个类似于 css 的 margin // 这里实测 不能设置太大 超过单元格原始大小后 打开会提示修复。暂时未找到很好的解法。 imageData.setTop(5); - imageData.setRight(5); + imageData.setRight(40); imageData.setBottom(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 当然可以不写 imageData.setRelativeFirstRowIndex(0); imageData.setRelativeFirstColumnIndex(0); imageData.setRelativeLastRowIndex(0); // 前面3个可以不写 下面这个需要写 也就是 结尾 需要相对当前单元格 往右移动一格 + // 也就是说 这个图片会覆盖当前单元格和 后面的那一格 imageData.setRelativeLastColumnIndex(1); // 写入数据