integrated_traffic/src/main/java/com/zcloud/util/HiddenExcelCompressImg.java

170 lines
5.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.zcloud.util;
import com.zcloud.entity.PageData;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.document.AbstractXlsView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 说明导出到EXCEL(图片压缩)
* 作者luoxiaobao
* 官网www.qdkjchina.com
*/
public class HiddenExcelCompressImg extends AbstractXlsView{
@Override
protected void buildExcelDocument(Map<String, Object> model,
Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
// String proPath = PathUtil.getProjectpath();
String beji = Const.HTTPFILEURL;
Date date = new Date();
String filename = DateUtil.date2Str(date, "yyyyMMddHHmmss");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");
HSSFSheet sheet;
HSSFWorkbook book = (HSSFWorkbook) workbook;
sheet = book.createSheet("sheet1");
List<String> titles = (List<String>) model.get("titles");
int len = titles.size();
HSSFCellStyle headerStyle = book.createCellStyle(); //标题样式
headerStyle.setAlignment(HorizontalAlignment.CENTER);
headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
HSSFFont headerFont = book.createFont(); //标题字体
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short)11);
headerStyle.setFont(headerFont);
short height=25*20;
HSSFRow row = sheet.createRow(0);
if(len>250) {
len = 250;
}
for(int i=0; i<len; i++){ //设置标题
String title = titles.get(i);
row.setRowStyle(headerStyle);
if(title.length()>250) {
row.createCell(i).setCellValue(title.substring(0, 250));
}else {
row.createCell(i).setCellValue(title);
}
}
sheet.getRow(0).setHeight(height);
HSSFCellStyle contentStyle = book.createCellStyle(); //内容样式
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
contentStyle.setAlignment(HorizontalAlignment.CENTER);
List<PageData> varList = (List<PageData>) model.get("varList");
int varCount = varList.size();
for(int i=0; i<varCount; i++){
PageData vpd = varList.get(i);
HSSFRow rows = sheet.createRow(i+1);
for(int j=0;j<len;j++){
String valKey = "var"+(j+1);
String imgKey = "img" +(j+1);
String varstr = "";
if(vpd.containsKey(valKey)) {
varstr = vpd.getString(valKey) != null ? vpd.getString("var"+(j+1)) : "";
}
if(vpd.containsKey(imgKey)) {
String img = vpd.getString(imgKey) != null ? vpd.getString("img" + (j + 1)) : "";
if(Tools.notEmpty(img)){
varstr = beji + img;
}
}
rows.setRowStyle(contentStyle);
rows.createCell(j).setCellValue(varstr);
// if(vpd.containsKey(imgKey)) {
// String varstr = vpd.getString(imgKey) != null ? vpd.getString("img"+(j+1)) : "";
// if(Tools.isEmpty(varstr)) {
// continue;
// }
// URL url = new URL(beji+varstr);
// BufferedImage bufferImg = null;
// try {
// bufferImg = Thumbnails.of(url).scale(0.3).asBufferedImage();
// } catch (Exception e) {
// e.printStackTrace();
// }
// ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
// if(bufferImg != null) {
// ImageIO.write(bufferImg, "jpg", byteArrayOut);
// HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 0, 0,(short) (j), (i+1), (short) (j+1), (i+2));
// patriarch.createPicture(anchor1, book.addPicture(byteArrayOut
// .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
// }
//
// }
}
}
// // 用户
// String filename = DateUtil.date2Str(date, "yyyyMMddHHmmss");
// String filePath = PathUtil.getProjectpath() + Const.FILEPATHFILE; //文件上传路径
//
// FileOutputStream fileOutputStream = null;
// System.out.println(filePath);
// try {
// fileOutputStream = new FileOutputStream(filePath + filename + ".xls");
// book.write(fileOutputStream);
// fileOutputStream.flush();
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// if(fileOutputStream != null){
// try {
// fileOutputStream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
// File excel = new File(filePath + filename + ".xls");
// FileInputStream in = new FileInputStream(excel);
//
// ByteArrayOutputStream bos = new ByteArrayOutputStream();
// ZipOutputStream zos = new ZipOutputStream(bos);
// try {
//
// zos.putNextEntry(new ZipEntry(filename+".xls"));
// byte[] buf = new byte[1024];
// int length;
// while ((length = in.read(buf)) > 0) {
// zos.write(buf, 0, length);
// }
// zos.closeEntry();
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
//
// in.close();
// zos.close();
// }
// excel.delete();
// response.setHeader("Content-Disposition", "attachment; filename=\"" + filename+".zip" + "\"");
// response.setContentType("application/octet-stream;charset=UTF-8");
// OutputStream os = response.getOutputStream();
// os.write(bos.toByteArray());
// os.close();
}
}