最近出现一个导出需求。 因为我们使用的是阿里的EasyExcel组件。 纠缠了一个多小时。 最终决定以自定义head的方式来解决这个问题。

具体代码如下:

Sheet sheet1 = new Sheet(1, 0 , ExportArticleVO.class);
            List<String> col4 = Lists.newArrayList("文章标题");
            List<String> col5 = Lists.newArrayList("分享次数");
            List<String> col6 = Lists.newArrayList("被转发次数");
            List<String> col7 = Lists.newArrayList("被访问次数");
            List<String> col8 = Lists.newArrayList("来源");
            List<List<String>> head1 = null;
            if (StringUtils.equals(orgId, hengtaiOrgId) || StringUtils.equals(orgId, csOrgId)) {
                List<String> col9 = Lists.newArrayList("所属栏目");
                head1 = Lists.newArrayList(col4, col5, col6, col7, col8, col9);
            } else {
                head1 = Lists.newArrayList(col4, col5, col6, col7, col8);
            }
            sheet1.setHead(head1);
            sheet1.setSheetName("文章报表");
            sheet1.setAutoWidth(true);
            writer.write(dataList, sheet1);

以上方法就舍弃了EasyExcel的实体VO。 直接自定义了head  这样就可以直接根据条件来做某一列的展示或者隐藏。 

以上是我的解决方案。 希望各位有更好的方法给予指正~   感谢!

GitHub 加速计划 / ea / easyexcel
31.64 K
7.47 K
下载
快速、简洁、解决大文件内存溢出的java处理Excel工具
最近提交(Master分支:3 个月前 )
c42183df Bugfix 3 个月前
efa7dff6 * 重新加回 `commons-io` 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐