[alibaba/easyexcel]请问 不使用实体类注解的方式,如何给表头及正文单元格设置样式

2024-06-20 946 views
3

最新的2.0.0-beta5版本将原来的Sheet类删除了,它的设置单元格格式方法setTableStyle及setColumnWidthMap方法也不能用。 所以,我想问对于非实体类对象的导出,如何设置单元格格式?

回答

1

请问下,我数据中的值是0,1怎么转换成正常,禁用呢?

4

请问下,我数据中的值是0,1怎么转换成正常,禁用呢?

应该是需要自己做实体类的数据转换

6

@whpat126 感谢,自定义了一个转换器,在其中的写方法中处理的。

2

已解决

    /**
     * 创建默认表头及内容格式
     * @return HorizontalCellStyleStrategy
     */
    private HorizontalCellStyleStrategy createDefaultStyle() {
        // 头的策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        // 背景设置为白色
        headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        // 表头的字体属性设置
        WriteFont headFont = new WriteFont();
        // 字体及大小
        headFont.setFontName(DEFAULT_FONT_ARIAL);
        headFont.setFontHeightInPoints((short)10);
        // 是否加粗
        headFont.setBold(false);
        headWriteCellStyle.setWriteFont(headFont);
        // 内容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        WriteFont contentFont = new WriteFont();
        contentFont.setFontName(DEFAULT_FONT_ARIAL);
        contentFont.setFontHeightInPoints((short)10);
        contentWriteCellStyle.setWriteFont(contentFont);
        // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
        return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
    }

    /**
     * 创建默认单元格样式,行高,列高
     * @return
     */
    private List<WriteHandler> getCustomWriteHandlerList() {
        List<WriteHandler> list = Lists.newLinkedList();
        // 默认单元格样式
        list.add(this.createDefaultStyle());
        // 默认行宽18
        list.add(new SimpleColumnWidthStyleStrategy(18));
        // 默认列高18
        list.add(new SimpleRowHeightStyleStrategy((short)18, (short)18));
        return list;
    }

    /**
     * 使用easy-excel导出文件
     * @param path 本次导出路径
     * @param fileName 文件名
     * @param columnIds 导出表头id
     * @param columnsName 导出表头name
     * @param columnRows 表头的行数
     * @param resultList 导出结果集数据
     * @param clazz 结果集映射实体类,为null的时候是结果集是map
     */
    public void execute(String path, String fileName, List<String> columnIds, List<String> columnsName, Integer columnRows, List resultList, Class clazz) {
        ……
        // 创建一个excel文件
        ExcelWriter excelWriter = EasyExcel.write(wholePath.toString()).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        writeSheet.setHead(this.createDefaultHead(columnsName, columnRows));
        // 设置单元格样式及行高列宽
        writeSheet.setCustomWriteHandlerList(this.getCustomWriteHandlerList());
        // 执行导出方法
        excelWriter.write(data, writeSheet);

        // 千万别忘记finish 会帮忙关闭流
        excelWriter.finish();
    }