• excel导出以流的形式


    前端后分离,导出excel

    @PostMapping("/exportSnByRDC")
        @ApiAuthority(noAuth = true)
        @ApiOperation("导出序列码")
        public void exportSnByRDC(@RequestBody RDCVM vm,HttpServletResponse response) {
            int type = vm.getType();
            log.info("exportSnByRDC type="+type);
                List<HuSnVO> vos = serialNumberService.exportSnByRDC(vm);
                //List<String> shipmentNumbers = vm.getShipmentNumbers();
    
                OutputStream output = null;
                try {
                    SXSSFWorkbook workbook = new SXSSFWorkbook();
                    workbook.createSheet("序列码");
                    Sheet sheet = workbook.getSheetAt(0);
                /*Sheet sheet1 = workBook.createSheet();
                SXSSFSheet sheet = workBook.createSheet("序列码")*/;
                    String []title = {"DeliveryNumber","OperDate","SkuCode",
                        "SkuName","Batch","SapQuantity","QRQuantity","Variance","From","To","SalesOrder"};
                    for (int i=0;i<title.length;i++) {
                        sheet.setColumnWidth(i, 252*12+323);//width=12
                    }
                    // 设置列宽这里12就是excel 里列宽12 i是第几列
    
                    CellStyle style = workbook.createCellStyle();
                    style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
                    Row row = sheet.createRow(0);
                    //声明列对象
                    Cell cell = null;
                    //创建标题
                    for(int i=0;i<title.length;i++){
                        cell = row.createCell(i);
                        cell.setCellValue(title[i]);
                        cell.setCellStyle(style);
                    }
    
                    long startTimea = System.currentTimeMillis();
                    //创建内容HuSnVO vo : vos
                    if(vos.size()>0){
                        for (int i=0;i<vos.size();i++) {
                            row = sheet.createRow(i + 1);
                            row.createCell(0).setCellValue(vos.get(i).getDn());
                            row.createCell(1).setCellValue(vos.get(i).getOperTime());
                            row.createCell(2).setCellValue(vos.get(i).getSkuCode());
                            row.createCell(3).setCellValue(vos.get(i).getSkuName());
                            row.createCell(4).setCellValue(vos.get(i).getBatch());
    
                            int sapQuan = vos.get(i).getSapQuantity();
                            row.createCell(5).setCellValue(sapQuan);
                            int qrQuan = (int)vos.get(i).getCartonCount();
                            row.createCell(6).setCellValue(qrQuan);
    
                            row.createCell(7).setCellValue(getPercet(qrQuan,sapQuan));
                            row.createCell(8).setCellValue(vos.get(i).getFrom());
                            row.createCell(9).setCellValue(vos.get(i).getTo());
                            row.createCell(10).setCellValue(vos.get(i).getSalesOrder());
                        }
                    }
                    //long endTimea = System.currentTimeMillis();
                    //float secondsa = (endTimea - startTimea) / 1000F;
                    //log.info("写序列码到excel时间" + Float.toString(secondsa) + " seconds.");
    
                    output = response.getOutputStream();
                    response.reset();
                    response.setHeader("Access-Control-Allow-Origin", "*");
                    response.setHeader("Cache-Control","no-cache");
                    response.setContentType("application/octet-stream");
                    String fileName ="";
                    if(StringUtil.isNotBlank(vm.getStartDate())){
                        fileName = vm.getStartDate().substring(0,10)+"-"+vm.getEndDate().substring(0,10) +".xlsx";
                        if(fileName.contains("_")){
                            fileName = fileName.replaceAll("_", "");
                        }
                    }else{
                        fileName = DataUtils.getCurrentTimes()+"-SnReport" +".xlsx";
                    }
    
                    response.addHeader("Content-Disposition", "attachment;filename="+fileName);
                    workbook.write(output);
                    output.flush();
                    output.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }

  • 相关阅读:
    asp.net 添加引用类型自动变为GAC
    FPDFCJK.BIN下载(Foxit Reader中/日/韩CJK文字符支持包)
    Failed to access IIS metabase.
    Failed to access IIS metabase.
    判断用户计算机是否安装了sql server
    (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer)
    当你被利用的价值越来越小时,路会越来越窄.
    tomcat 6.0如何配置虚拟目录?tomcat 6.0 不能列目录?
    史上最高科技,Big Data奥运
    基于ping命令的网络故障排查方法
  • 原文地址:https://www.cnblogs.com/lyon91/p/11384516.html
Copyright © 2020-2023  润新知