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.效果图