背景
之前有个需求,需要在一个单元格内写多行文本内容。一般我们文件都是通过 "\n" 来表示换行,我也就这样写了。后来发现生成的 excel 无法换行,但是点击一下对应的单元格后居然就换行了。这里记录下我的解决方案。
示例
正确生成的 excel 应该一打开就和下图一样
image.png
以下是示例代码
@Slf4j
public class MyWriteTest {
/**
* 单元格内容换行
*/
@Test
public void cellWrapTest() {
String fileName = TestFileUtil.getPath() + "cellWrapTest" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName, DemoData.class)
.sheet("模板")
.doWrite(this::getCellWrapTestData);
}
private List<List<WriteCellData<String>>> getCellWrapTestData() {
List<List<WriteCellData<String>>> dataList = new ArrayList<>(1);
List<WriteCellData<String>> data = new ArrayList<>(3);
WriteCellData<String> title = new WriteCellData<>("aaa\nbbb\nccc");
WriteCellStyle cellStyle = new WriteCellStyle();
// 将此标志设置为true,通过在多行上显示单元格中的所有内容,使其可见
cellStyle.setWrapped(true);
title.setWriteCellStyle(cellStyle);
data.add(title);
data.add(new WriteCellData<>("yyyy-MM-dd HH:mm:ss"));
data.add(new WriteCellData<>("11111"));
dataList.add(data);
return dataList;
}
}