对上一篇Java Web 中的excel的导出的方法改善和一些局限性的介绍

对上一篇Java Web 中的excel的导出的方法改善和一些局限性的介绍

    public static HSSFWorkbook fillExcelDataWithTemplate(List<List> list, String[] titles, String sheetname) {


        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet(sheetname);//名称
        sheet.setDefaultColumnWidth(18);
        HSSFRow row0 = sheet.createRow(0);
        int count = 0;
        for (int i = 0; i < titles.length; i++) {
            if (isNumeric(titles[i])) {
                count++;
                i++;
            }

            if (i >= titles.length) {
                break;
            }
            row0.createCell(i - count).setCellValue(titles[i]);
        }
        int rowIndex = 1;
        HSSFRow row;
        for (List list1 : list) {
            row = sheet.createRow(rowIndex);
            rowIndex++;
            int count1 = 0;
            int count2 = 0;
            for (int i = 0; i < titles.length; i++) {
                if (isNumeric(titles[i])) {
                    count1+= (Integer.parseInt(titles[i])-1);
                    count2++;
                    i++;
                }

                if (i >= titles.length) {
                    break;
                }
                row.createCell(i - count2).setCellValue((String) list1.get(i+count1));
            }
        }
        return wb;
    }

修改的地方
上一篇中介绍了如果实体类中的一些字段不想要导出在excel中,可以在titles中对应的位置设置为1,但是,如果实体类中有很多不与要导出的字段,这时候就会筛选出来要导出的字段就会很繁琐。这时候为了简化操作,就可以通过一下方法解决;
1、重新建一个实体类,只有需要导出的字段,顺序也可以自己设计
2、如果原实体类中有很多连续且不需要的字段,那么可以直接在titles中写上数字n,n就代表该位置有n个连续的不需要输出的字段,具体修改如上代码(结核我前一篇中的代码分析更容易看懂)

 List<List> list = iVehicleDetailService.DayCountDataListExcelOut(request,vehicleid,startTime,endTime);
        String sheetname = "日工作统计一览表";
        String[] titles = {"2","上传时间","统计时间","2","点火次数","15","出动时刻","收工时间","当日工作时间","总工作时间"};

        HSSFWorkbook wb = OutExcel.fillExcelDataWithTemplate(list,titles,sheetname);
        ExcelUtil.export(response,wb,"日工作统计一览表.xls");

上面是控制器中的一部分代码,希望可以帮助到大家。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值