diff --git a/CHANGELOG.md b/CHANGELOG.md index b1fde4966..3a56a690f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ------------------------------------------------------------------------------------------------------------- -# 5.7.2 (2021-06-17) +# 5.7.2 (2021-06-18) ### 🐣新特性 * 【core 】 增加UserPassAuthenticator @@ -13,6 +13,7 @@ ### 🐞Bug修复 * 【db 】 修复Oracle下别名错误造成的SQL语法啊错误(issue#I3VTQW@Gitee) * 【core 】 修复ConcurrencyTester重复使用时开始测试未清空之前任务的问题(issue#I3VSDO@Gitee) +* 【poi 】 修复使用BigWriter写出,ExcelWriter修改单元格值失败的问题(issue#I3VSDO@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-aop/pom.xml b/hutool-aop/pom.xml index 208cd6e05..3520840a9 100644 --- a/hutool-aop/pom.xml +++ b/hutool-aop/pom.xml @@ -19,7 +19,7 @@ 3.3.0 - 5.3.7 + 5.3.8 diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java index 8ebff48c7..2429fa9a3 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java @@ -218,6 +218,14 @@ public class CellUtil { return; } + // issue#1659@Github + // 在使用BigWriter(SXSSF)模式写出数据时,单元格值为直接值,非引用值(is标签) + // 而再使用ExcelWriter(XSSF)编辑时,会写出引用值,导致失效。 + // 此处做法是先清空单元格值,再写入 + if(CellType.BLANK != cell.getCellType()){ + cell.setBlank(); + } + if (null == value) { cell.setCellValue(StrUtil.EMPTY); } else if (value instanceof FormulaCellValue) { diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java index 5d4b72178..a442d5e4c 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java @@ -21,7 +21,10 @@ import org.apache.poi.ss.util.CellRangeAddressList; import org.junit.Ignore; import org.junit.Test; +import java.io.File; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -570,4 +573,31 @@ public class ExcelWriteTest { // 关闭writer,释放内存 writer.close(); } + + /** + * issue#1659@Github + * 测试使用BigWriter写出,ExcelWriter修改失败 + */ + @Test + @Ignore + public void editTest(){ + // 生成文件 + File file = new File("d:/test/100_.xlsx"); + FileUtil.del(file); + + BigExcelWriter writer = ExcelUtil.getBigWriter(file); + writer.disableDefaultStyle(); + List> rows = Collections.singletonList(Arrays.asList("哈哈", "嘿嘿")); + writer.write(rows); + writer.close(); + + // 修改文件 + ExcelWriter writer2 = ExcelUtil.getWriter(file); + writer2.disableDefaultStyle(); + writer2.writeCellValue(0, 0, "a"); + writer2.close(); + + final ExcelReader reader = ExcelUtil.getReader(file); + Console.log(reader.read()); + } }