导出PDF

1.前端
/**
 * 导出消毒安全操作表
 */
function exportTable() {
	var row = $('#archviesDisinfectionTask_selectMission_dg').datagrid('getSelected');
	if(row){
		window.open(basePath + "sterilize/exportPDF?batchSterilizer="+row.batchSterilizer);
	}else{
		$.messager.alert('警告','请先选择要导出的记录','info');
	}
}
2.后端-制作表格
public void exportSecurityTableForPdf(String batchSterilizer,HttpServletResponse response) throws Exception{
            //加载Excel文档
            Workbook workbook = new Workbook();
            Worksheet sheet = workbook.getWorksheets().get(0);
            //合并单元格范围A1到J1
            sheet.getRange().get("A1:J1").merge();
            sheet.getCellRange("A1").setText("消毒安全操作表");
            sheet.getCellRange("A1").getCellStyle().getExcelFont().setSize(16);
            //设置加粗
            sheet.getCellRange("A1").getCellStyle().getExcelFont().isBold(true);
            //水平居中
            sheet.getCellRange("A1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);
            //自动换行
            sheet.getCellRange("A1").getCellStyle().setWrapText(true);
            //设置行高
            sheet.getCellRange("A1:J1").setRowHeight(25);

            //设置名称
            sheet.getCellRange("A2").setText("日期");
//            sheet.getCellRange("A2").getCellStyle().getExcelFont().setFontName("Comic Sans MS");
            sheet.getCellRange("B2").setText("档案编号");
            sheet.getCellRange("C2").setText("消毒开始时间(40分钟)");
            sheet.getCellRange("D2").setText("消毒结束时间");
            sheet.getCellRange("E2").setText("消毒浓度(0.2mg/m³)");
            sheet.getCellRange("F2").setText("分解臭氧开始时间(20分钟)");
            sheet.getCellRange("G2").setText("分解臭氧结束时间");
            sheet.getCellRange("H2").setText("分解后臭氧浓度(oppm)");
            sheet.getCellRange("I2").setText("操作员");
            sheet.getCellRange("J2").setText("负责人");
            List<InventoryCheckAccpet> listtList = inventoryCheckAccpetRepository.securityTable(batchSterilizer);
            SterilizeInformationRoom sterilizeInformationRoom = sterilizeInformationRoomRepository.securityTable(batchSterilizer);
            int i = 0;
            for ( i = 0; i < listtList.size(); i++) {
                LocalDateTime dateTime = listtList.get(i).getEnterSterilizerRoom();
                if (dateTime==null) {
                    sheet.getCellRange("A"+(i+3)+"").setText("");
                }else {
                    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                    String localTime = df.format(dateTime);
                    sheet.getCellRange("A"+(i+3)+"").setText(localTime);
                }
                sheet.getCellRange("B"+(i+3)+"").setText(listtList.get(i).getArchivesChestNo());
                if (sterilizeInformationRoom!=null) {
                    sheet.getCellRange("C"+(i+3)+"").setText(sterilizeInformationRoom.getSterilizeBeginTime()+"");
                    sheet.getCellRange("D"+(i+3)+"").setText(sterilizeInformationRoom.getSterilizeEndTime()+"");
                    sheet.getCellRange("E"+(i+3)+"").setText(sterilizeInformationRoom.getConcentration());
                    sheet.getCellRange("F"+(i+3)+"").setText(sterilizeInformationRoom.getOzenBenginTime()+"");
                    sheet.getCellRange("G"+(i+3)+"").setText(sterilizeInformationRoom.getOzenEndTime()+"");
                    sheet.getCellRange("H"+(i+3)+"").setText(sterilizeInformationRoom.getAfterOzen());
                    sheet.getCellRange("I"+(i+3)+"").setText(sterilizeInformationRoom.getOperator());
                    sheet.getCellRange("J"+(i+3)+"").setText(sterilizeInformationRoom.getPrincipal());
                }
            }
            i = i+2;
            //水平居中
            sheet.getCellRange("A2:J"+i).getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);
            //自动换行
            sheet.getCellRange("A2:J"+i).getCellStyle().setWrapText(true);
            //获取需要设置边框的单元格范围
            CellRange cr = sheet.getCellRange(sheet.getFirstRow(), sheet.getFirstColumn(), sheet.getLastRow(), sheet.getLastColumn());
            //设置边框样式
            cr.getBorders().setLineStyle(LineStyleType.Thin);
            cr.getBorders().getByBordersLineType(BordersLineType.DiagonalDown).setLineStyle(LineStyleType.None);
            cr.getBorders().getByBordersLineType(BordersLineType.DiagonalUp).setLineStyle(LineStyleType.None);
            cr.getBorders().setColor(Color.BLACK);
            //将第四列的列宽设为20
            String fileName = "消毒安全操作表("+batchSterilizer+").pdf";
            //调用方法保存为PDF格式
            workbook.saveToFile(fileName,FileFormat.PDF);
          //读取d盘的file1文件
          //      File file = new File("d:/ToPDF.pdf");
          //读取指定路径下面的文件
          InputStream in = new FileInputStream(fileName);
          //创建存放文件内容的数组
          byte[] buff =new byte[1024];
          //所读取的内容使用n来接收
          int n;
          // 清空response
          response.reset();
          // 设置response的Header
          response.setContentType("application/octet-stream");
          response.setHeader("Content-disposition", "attachment;filename=" +java.net.URLEncoder.encode(fileName, "UTF-8"));

          response.flushBuffer();
          //当没有读取完时,继续读取,循环
          OutputStream ouputStream =  new BufferedOutputStream(response.getOutputStream());
          while((n=in.read(buff))!=-1){
            //将字节数组的数据全部写入到输出流中
              ouputStream.write(buff,0,n);
          }
          //强制将缓存区的数据进行输出
          ouputStream.flush();
          //关流
          ouputStream.close();
          in.close();
          deleteFile(fileName);
        }
		
		 /**
         * 删除文件
         *
         * @param pathname
         * @return
         * @throws IOException
         */
        public static boolean deleteFile(String pathname){
            boolean result = false;
            File file = new File(pathname);
            System.out.println(file.getAbsolutePath());
            if (file.exists()) {
                file.delete();
                result = true;
                System.out.println("文件已经被成功删除");
            }
            return result;

        }

3.效果图

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值