From 6b6bf55bd752a477643c798d9e9bba36bef277ef Mon Sep 17 00:00:00 2001 From: wangrenhuang <wangren_huang@163.com> Date: 星期三, 31 八月 2022 19:30:03 +0800 Subject: [PATCH] 导出文件工具类优化 --- src/main/java/com/hx/util/ExcelUtil.java | 83 +++++++++++++++++++++++++++++++++++++++++ src/main/java/com/hx/util/FileUtils.java | 37 ++++++++++++++++++ 2 files changed, 120 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/hx/util/ExcelUtil.java b/src/main/java/com/hx/util/ExcelUtil.java index d0b4f6d..5cbea70 100644 --- a/src/main/java/com/hx/util/ExcelUtil.java +++ b/src/main/java/com/hx/util/ExcelUtil.java @@ -15,6 +15,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.multipart.MultipartFile; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -719,4 +721,85 @@ } + + + + public static File createExcelByImg(String[] headList, String[] fieldList, List<Map<String, Object>> dataList, Integer height, Integer width) throws Exception { + File file = File.createTempFile("temp", ".xls"); + FileOutputStream fileOut = null; + BufferedImage bufferImg = null; + + try { + ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); + if (height == null) { + height = 450; + } + + if (width == null) { + width = 1000; + } + + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFCellStyle boderStyle = workbook.createCellStyle(); + boderStyle.setVerticalAlignment((short)1); + boderStyle.setAlignment((short)2); + HSSFSheet sheet = workbook.createSheet(); + HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); + HSSFRow row = sheet.createRow(0); + + HSSFCell anchor; + for(int i = 0; i < headList.length; ++i) { + row.setHeight(height.shortValue()); + sheet.setColumnWidth(i, width); + anchor = row.createCell(i); + anchor.setCellType(1); + anchor.setCellValue(headList[i]); + anchor.setCellStyle(boderStyle); + } + + HSSFRow row_value = null; + anchor = null; + HSSFCell cell = null; + if (dataList != null) { + for(int n = 0; n < dataList.size(); ++n) { + row_value = sheet.createRow(n + 1); + row_value.setHeight(height.shortValue()); + Map<String, Object> dataMap = (Map)dataList.get(n); + + for(int i = 0; i < fieldList.length; ++i) { + sheet.setColumnWidth(i, width); + cell = row_value.createCell(i); + cell.setCellType(1); + Object value = dataMap.get(fieldList[i]); + if (value != null && "class java.io.File".equals(value.getClass().toString())) { + File file2 = (File)value; + if (file2 == null) { + cell.setCellValue(""); + } else { + bufferImg = ImageIO.read(file2); + ImageIO.write(bufferImg, "jpg", byteArrayOut); + HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 1023, 255, (short)i, n + 1, (short)i, n + 1); + anchor1.setAnchorType(0); + patriarch.createPicture(anchor1, workbook.addPicture(byteArrayOut.toByteArray(), 5)); + } + } else { + cell.setCellValue(objToString(dataMap.get(fieldList[i]))); + cell.setCellStyle(boderStyle); + } + } + } + } + + FileOutputStream fOut = new FileOutputStream(file); + workbook.write(fOut); + fOut.flush(); + fOut.close(); + } catch (Exception var25) { + var25.printStackTrace(); + } finally { + file.deleteOnExit(); + } + + return file; + } } \ No newline at end of file diff --git a/src/main/java/com/hx/util/FileUtils.java b/src/main/java/com/hx/util/FileUtils.java index 6911a87..7da1769 100644 --- a/src/main/java/com/hx/util/FileUtils.java +++ b/src/main/java/com/hx/util/FileUtils.java @@ -7,6 +7,7 @@ import java.io.*; import java.net.FileNameMap; +import java.net.URL; import java.net.URLConnection; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -625,5 +626,41 @@ return type; } + public static File httpUrlFile(String netUrl) throws IOException { + File file = File.createTempFile("temp123", ".xls"); + InputStream inStream = null; + FileOutputStream os = null; + + try { + file = File.createTempFile("net_url", ".jpg"); + URL urlfile = new URL(netUrl); + inStream = urlfile.openStream(); + os = new FileOutputStream(file); + + byte[] buffer = new byte[8192]; + + int bytesRead; + while((bytesRead = inStream.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + } catch (Exception var15) { + var15.printStackTrace(); + } finally { + try { + if (null != os) { + os.close(); + } + + if (null != inStream) { + inStream.close(); + } + } catch (Exception var14) { + var14.printStackTrace(); + } + + } + + return file; + } } -- Gitblit v1.8.0