easyexcel
easyexcel copied to clipboard
根据JAVA对象导出Excel模版,请问如何将某个列全部设置为文本格式
版本:3.0.2 Easy-Excel 3.0.2
问题:根据JAVA对象导出Excel模版,请问如何将某个列全部设置为文本格式, 找了很多文档都没解决,我太菜了求助。现在填写我导出的模版 填写日期会变成2022/10/10 我想填写的时候是 2022-10-10
public class CustomWriteHandler implements CellWriteHandler { @Override public void afterCellDispose(CellWriteHandlerContext context) { final Cell cell = context.getCell(); final CellStyle cellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle(); final DataFormat dataFormat = context.getWriteWorkbookHolder().getWorkbook().createDataFormat(); final short format = dataFormat.getFormat("@"); // 设置为文本 cellStyle.setDataFormat(format); cell.setCellStyle(cellStyle); } }
太难了 找了很多文档都没解决问题 求助。
方法1:pojo加个属性,String类型的,自己转好日期格式写进去。原来Date类型的不要写入excel 方法2:自定义converter
方法1:pojo加个属性,字符串类型的,自己转好日期格式写。原来日期类型的不要写入excel 方法2:自定义转换器
你这种只是导出数据的时候设置某个row的某个cell吧 ,我是想让整个cell列全部是文本。 查了半天找到一个 public class CellWriteHandler implements SheetWriteHandler {
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder,
WriteSheetHolder writeSheetHolder) {
SXSSFSheet sxssfSheet = (SXSSFSheet) writeSheetHolder.getSheet();
final String sheetName = writeSheetHolder.getSheet().getSheetName();
final Integer cellNumber = ExcelFileDownLoadConfig.getCellNumber(sheetName);
for (int i = 0; i < cellNumber; i++) {
final CellStyle cellStyle = writeWorkbookHolder.getCachedWorkbook().createCellStyle();
cellStyle.setDataFormat((short) 49);
sxssfSheet.setDefaultColumnStyle(i, cellStyle);
}
}
不过这里的cell列的个数 需要自己配置
@zhangchaoyanggit 我的解决方案是 写一个 RowWriteHandler 在写表头时获取有多少列 然后设置 每列的文本样式
**
* 自定义行处理器
*
* @author LiuYuan
* @date 2023/06/14 11:00
*/
public class ColumnTextStyleRowWriteHandler implements RowWriteHandler {
@Override
public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {
if (isHead) {
// 设置单元格样式为文本
CellStyle cellStyle = row.getSheet().getWorkbook().createCellStyle();
DataFormat format = row.getSheet().getWorkbook().createDataFormat();
cellStyle.setDataFormat(format.getFormat("@"));
// 获得列的数量
int columnCount = row.getLastCellNum();
for (int i = 0; i < columnCount; i++) {
Sheet sheet = writeSheetHolder.getSheet();
sheet.setDefaultColumnStyle(i, cellStyle);
}
}
}
}