欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 导出中文文件名的excle表格

程序员文章站 2022-03-07 22:32:19
...

 Java 导出中文文件名的excle表格代码如下:

                String fileName="账单明细.xls";
                String userAgent = request.getHeader("user-agent");
//                response.setHeader("Content-disposition", "attachment; filename=" + new String("账单明细.xls".getBytes("gb2312"), "ISO8859-1"));
                if (userAgent != null && userAgent.indexOf("Firefox") >= 0 ||
                        userAgent.indexOf("Chrome") >= 0 ||
                        userAgent.indexOf("Safari") >= 0) {
                    fileName= new String((fileName).getBytes(), "ISO8859-1");
                } else {
                    fileName= URLEncoder.encode(fileName,"UTF8"); //其他浏览器
                }
                response.setHeader("Content-disposition", "attachment; filename=" + fileName);

导出exlce全部代码:

    @Override
    public void exportLtsRecieveListExcle(LtsAgencyFundQuery query, HttpServletResponse response, HttpServletRequest request) {

        Result<List<LtsAgencyFundDto>> result = agencyFundFacadeService.selectLtsRecieveList(query);

        if ("success".equals(result.getResult())&&result.getData()!=null) {
            List<LtsAgencyFundDto> data =result.getData();
            OutputStream os;
            try {
                os = response.getOutputStream();
                response.reset();
                String fileName="账单明细.xls";
                String userAgent = request.getHeader("user-agent");
//                response.setHeader("Content-disposition", "attachment; filename=" + new String("账单明细.xls".getBytes("gb2312"), "ISO8859-1"));
                if (userAgent != null && userAgent.indexOf("Firefox") >= 0 ||
                        userAgent.indexOf("Chrome") >= 0 ||
                        userAgent.indexOf("Safari") >= 0) {
                    fileName= new String((fileName).getBytes(), "ISO8859-1");
                } else {
                    fileName= URLEncoder.encode(fileName,"UTF8"); //其他浏览器
                }
                response.setHeader("Content-disposition", "attachment; filename=" + fileName);
                response.setContentType("application/msexcel");// 定义输出类型
                WritableWorkbook workbook = Workbook.createWorkbook(os);
                WritableSheet sheet = workbook.createSheet("Sheet1", 0);


                // write title
                sheet.addCell(new Label(0, 0, "运单号"));
                sheet.addCell(new Label(1, 0, "人"));
                sheet.addCell(new Label(2, 0, "状态"));
                sheet.addCell(new Label(3, 0, "方式"));
                sheet.addCell(new Label(4, 0, "开单时间"));
                sheet.addCell(new Label(5, 0, "发车时间"));
                sheet.addCell(new Label(6, 0, "收款金额(元)"));
                sheet.addCell(new Label(7, 0, "收款已收(元)"));
                sheet.addCell(new Label(8, 0, "收款未收(元)"));
                sheet.addCell(new Label(9, 0, "收手续费(元)"));
                sheet.addCell(new Label(10, 0, "手续费已付(元)"));
                sheet.addCell(new Label(11, 0, "手续费未付(元)"));
                sheet.addCell(new Label(12, 0, "联系人"));
                sheet.addCell(new Label(13, 0, "手机号"));
                sheet.addCell(new Label(14, 0, "地址"));
                sheet.addCell(new Label(15, 0, "站点"));
                sheet.addCell(new Label(16, 0, "联系人"));
                sheet.addCell(new Label(17, 0, "手机号"));
                sheet.addCell(new Label(18, 0, "地址"));
                sheet.addCell(new Label(19, 0, "站"));
                sheet.addCell(new Label(20, 0, "名称"));
                sheet.addCell(new Label(21, 0, "数量(件)"));
                sheet.addCell(new Label(22, 0, "重量(公斤)"));
                sheet.addCell(new Label(23, 0, "体积(方)"));

                // write data
                int i = 1;
                for (LtsAgencyFundDto vo : data) {

                    String deliveryType="";
                    if (vo.getDeliveryType() == 1) {
                        deliveryType="提";
                    }else if (vo.getDeliveryType() == 2) {
                        deliveryType="货";
                    }

                    String inStatus="";
                    if (vo.getBranchCostInStatus() == 1) {
                        inStatus="回收";
                    }else if (vo.getBranchCostInStatus() == 2) {
                        inStatus="部分";
                    }else if (vo.getBranchCostInStatus() == 3) {
                        inStatus="回收";
                    }

                    sheet.addCell(new Label(0, i, vo.getWayBillNo()));
                    sheet.addCell(new Label(1, i, vo.getBranchCostCustomerName()));
                    sheet.addCell(new Label(2, i, inStatus));
                    sheet.addCell(new Label(3, i, deliveryType));
                    sheet.addCell(new Label(4, i, date2Str(vo.getInputDate(),FMT_STANDARD_LONG)));
                    sheet.addCell(new Label(5, i, date2Str(vo.getSignTime(),FMT_STANDARD_LONG)));
                    sheet.addCell(new Label(6, i, vo.getBranchCost()));
                    sheet.addCell(new Label(7, i, vo.getBranchCostIn()));
                    sheet.addCell(new Label(8, i, vo.getWaitOut()));
                    sheet.addCell(new Label(9, i, vo.getCost()));
                    sheet.addCell(new Label(10, i, ""));
                    sheet.addCell(new Label(11, i, ""));
                    sheet.addCell(new Label(12, i, vo.getShipperName()));
                    sheet.addCell(new Label(13, i, vo.getShipperPhone()));
                    sheet.addCell(new Label(14, i, vo.getfAddress()));
                    sheet.addCell(new Label(15, i, vo.getfSiteName()));
                    sheet.addCell(new Label(16, i, vo.getReceiverName()));
                    sheet.addCell(new Label(17, i, vo.getReceiverPhone()));
                    sheet.addCell(new Label(18, i, vo.gettAddress()));
                    sheet.addCell(new Label(19, i, vo.gettSiteName()));
                    sheet.addCell(new Label(20, i, vo.getGoodsName()));
                    sheet.addCell(new Label(21, i, vo.getGoodsCount()));
                    sheet.addCell(new Label(22, i, vo.getGoodsWeight()));
                    sheet.addCell(new Label(23, i, vo.getGoodsVolume()));
                    i++;
                }
                workbook.write();
                workbook.close();
                os.flush();
            } catch (IOException e){
                LOGGER.error("exportLtsRecieveListExcle error param="+query,e);
                throw new ServiceException("500","导出失败");
            } catch (Exception e) {
                LOGGER.error("exportLtsRecieveListExcle error param="+query,e);
                throw new ServiceException("500","导出失败");
            }
        } else {
            throw new ServiceException("500","数据查询失败");
        }
    }