fix poi bug

This commit is contained in:
Looly 2021-06-18 11:22:07 +08:00
parent 185764ec75
commit 7ead906910
4 changed files with 41 additions and 2 deletions

View File

@ -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
-------------------------------------------------------------------------------------------------------------

View File

@ -19,7 +19,7 @@
<properties>
<!-- versions -->
<cglib.version>3.3.0</cglib.version>
<spring.version>5.3.7</spring.version>
<spring.version>5.3.8</spring.version>
</properties>
<dependencies>

View File

@ -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) {

View File

@ -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<List<String>> 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());
}
}