当前位置: 首页 > wzjs >正文

山东网站开发网络公司设计网站怎么做的

山东网站开发网络公司,设计网站怎么做的,wordpress链接版权,联系我们_网站制作公司最近项目要实现一个功能&#xff0c;就是在导出报表的时候 &#xff0c;要把每条数据的所有图片都要打包成zip附件在excel里一起导出。 1. 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…

 最近项目要实现一个功能,就是在导出报表的时候 ,要把每条数据的所有图片都要打包成zip附件在excel里一起导出。

1. 添加依赖

           <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.5</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.5</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.5</version></dependency><dependency><groupId>org.ehcache</groupId><artifactId>ehcache</artifactId><version>3.9.11</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.16.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency>

2. 实现代码

以下是一个完整的Java实现:

2.1 把图片打包成zip

 /*** 把图片和视频打包成一个zip文件** @param zipFilePath* @param imagePaths* @throws IOException*/public File createZipFile(String zipFilePath, List<String> imagePaths) throws IOException, InvalidFormatException {File zipFile = new File(zipFilePath);if (!zipFile.exists()) {if (!zipFile.getParentFile().exists()) {zipFile.getParentFile().mkdirs();}zipFile.createNewFile();}try (FileOutputStream fos = new FileOutputStream(zipFilePath);ZipOutputStream zos = new ZipOutputStream(fos)) {for (String imagePath : imagePaths) {File fileToZip = new File(imagePath);FileInputStream fis = new FileInputStream(fileToZip);ZipEntry zipEntry = new ZipEntry(fileToZip.getName());zos.putNextEntry(zipEntry);byte[] bytes = new byte[1024];int length;while ((length = fis.read(bytes)) >= 0) {zos.write(bytes, 0, length);}fis.close();}}return zipFile;}

 2.2 把Zip文件添加到excel附件,并生成缩略图

package com.bdspace.gateway.util;import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileSystemView;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;/*** poi打包图片成zip文件添加到excel附件** @author lyl* @version v1.0* @since 2025/4/24*/
public class PoiAttachUtil {/*** 创建附件* @param workbook* @param sheet* @param row* @param zipFile* @throws IOException*/public void createAttch(Workbook workbook, Sheet sheet, int row, String zipFile) throws IOException {//只有HSSFWorkbook才能使用OLE对象,并且poi需要在4.0之上// 创建工作簿和工作表对象// 读取需要添加的文件,如果有需要添加多个文件的需求,可以循环表格来添加File pdfFile = new File(zipFile);FileInputStream fis = new FileInputStream(pdfFile);byte[] pdfBytes = new byte[(int) pdfFile.length()];fis.read(pdfBytes);fis.close();// 获取文件系统视图FileSystemView view = FileSystemView.getFileSystemView();Icon systemIcon = view.getSystemIcon(pdfFile);// 将 Icon 对象转换为 Image 对象Image image = iconToImage(systemIcon);// 将 Image 对象转换为字节数组byte[] imageBytes = imageToByteArray(image);//将文件的图标添加进入到Excel文件内int iconid = workbook.addPicture(imageBytes, HSSFWorkbook.PICTURE_TYPE_JPEG);// 在工作表中创建OLE对象,就是将文件插入到Excel文件中int pdfIdx = workbook.addOlePackage(pdfBytes, pdfFile.getName(), row + pdfFile.getName(), pdfFile.getName());// 创建画布和锚点Drawing<?> drawing = sheet.createDrawingPatriarch();ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 6, row, 7, row + 1);//这里的参数后续根据传过来的信息来变化。row,colanchor.setAnchorType(HSSFClientAnchor.AnchorType.MOVE_AND_RESIZE);drawing.createObjectData(anchor, pdfIdx, iconid);}// 将 Icon 对象转换为 Image 对象private Image iconToImage(Icon icon) {if (icon instanceof ImageIcon) {return ((ImageIcon) icon).getImage();} else {int width = icon.getIconWidth();int height = icon.getIconHeight();BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);Graphics graphics = image.createGraphics();icon.paintIcon(null, graphics, 0, 0);graphics.dispose();return image;}}// 将 Image 对象转换为字节数组private byte[] imageToByteArray(Image image) throws IOException {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();ImageIO.write(imageToBufferedImage(image), "png", byteArrayOutputStream);return byteArrayOutputStream.toByteArray();}// 将 Image 对象转换为 BufferedImage 对象private BufferedImage imageToBufferedImage(Image image) {if (image instanceof BufferedImage) {return (BufferedImage) image;}BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);Graphics2D graphics2D = bufferedImage.createGraphics();graphics2D.drawImage(image, 0, 0, null);graphics2D.dispose();return bufferedImage;}public static void main(String[] args) {PoiAttachUtil p = new PoiAttachUtil();Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");Row row = sheet.createRow(0);//加载附件String zipFilePahth = "D:\\testaa\\image1.zip";try {p.createAttch(workbook, sheet, 1, zipFilePahth);try (OutputStream fileOut = new FileOutputStream("D:\\testaa\\事件测试2.xls")) {workbook.write(fileOut);}// 关闭工作簿workbook.close();} catch (IOException e) {throw new RuntimeException(e);}}}

3. 在Spring MVC控制器中使用

 

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.servlet.http.HttpServletResponse;@Controller
public class ExportController {@GetMapping("/export/employees")public void exportEmployees(HttpServletResponse response) throws IOException {PoiAttachUtil p = new PoiAttachUtil();Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");Row row = sheet.createRow(0);String zipFilePath="d:\\temp\test.zip";//添加图片路径。或从数据库拿List<String> files=new ArrayList<>();//加载附件String zipFilePahth =  p.createZipFile(zipFilePath, files);try {p.createAttch(workbook, sheet, 1, zipFilePahth);try (OutputStream fileOut = new FileOutputStream(response)) {workbook.write(fileOut);}// 关闭工作簿workbook.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

4. 功能说明

  1. Excel创建:使用Apache POI创建XSSFWorkbook(支持.xlsx格式)

  2. 数据填充:将数据填充到工作表中,自动处理不同类型的数据

  3. ZIP打包:把对应路径下的文件打包成ZIP

  4. HTTP响应:设置正确的响应头,将ZIP文件发送给客户端

5. 高级选项

  • 多Sheet支持:可以在一个Excel文件中创建多个工作表

  • 多文件打包:可以在ZIP中包含多个Excel文件或其他文件

  • 样式设置:可以为单元格添加样式(字体、颜色、边框等)

  • 大数据量处理:对于大数据量,可以使用SXSSFWorkbook来减少内存消耗

 


文章转载自:

http://BusU66Kr.kkjLz.cn
http://EEg2iy2e.kkjLz.cn
http://qgQRcE9N.kkjLz.cn
http://635T052N.kkjLz.cn
http://9DSblZ29.kkjLz.cn
http://N2A4zwuv.kkjLz.cn
http://LLgTrOah.kkjLz.cn
http://HE0KM8fM.kkjLz.cn
http://JtRGzy58.kkjLz.cn
http://G4GTG9QM.kkjLz.cn
http://UGWAHzpT.kkjLz.cn
http://ficEiSCK.kkjLz.cn
http://5ijb0BHQ.kkjLz.cn
http://p4p3ZdxB.kkjLz.cn
http://UGyfDNOd.kkjLz.cn
http://6X03EnMb.kkjLz.cn
http://Rv3Ktm9c.kkjLz.cn
http://TnHATmTr.kkjLz.cn
http://TsdW3rKT.kkjLz.cn
http://oFU071wp.kkjLz.cn
http://MH46igXl.kkjLz.cn
http://lB1uQKYc.kkjLz.cn
http://wIqDDzKI.kkjLz.cn
http://oTv0m1zB.kkjLz.cn
http://WsIQte2v.kkjLz.cn
http://g1DHCkR5.kkjLz.cn
http://itygsASK.kkjLz.cn
http://O5OulClv.kkjLz.cn
http://N88DarWg.kkjLz.cn
http://ZzX3Lubg.kkjLz.cn
http://www.dtcms.com/wzjs/634462.html

相关文章:

  • 用邮箱地址做网站域名好吗深圳建设局和住建局
  • 营销网站建站企业番禺网站建设哪家强
  • 网站建设情况总结雅布设计平面
  • 咨询网站源码工信部 网站备案查询
  • 淘宝客网站备案信息怎么写开发网站现实网络传输失败
  • php做简单网站教程html5自建网站
  • html导航网站源码网站服务器的安全性首先是实现用户账号的权限设置
  • 目前国内做情趣最好的网站google框架三件套
  • 怎样做直播网站网络营销推广方案论文
  • ic商城网站建设南大芜湖企业做网站
  • 餐厅装修设计公司网站c 网站开发培训
  • 建立网站最先进的互联网技术有哪些深圳商城网站设计价格
  • 网站服务器错误怎么办网站管理入口
  • 网站管理淄博建设企业网站
  • 东莞网站推广建设html5开发的网站
  • 做网站推广需要多少费用沈阳网站建设黑酷科技
  • 电子商务网站建设与管理的书企业员工培训总结
  • 有没有一些网站可以做问卷关于建设工程招标的网站
  • 外贸公司网站空间电子商务的网站的建设内容
  • 安徽合肥制作网站公司吗桂林象鼻山作文400字
  • asp 网站模板dedecms 做电商网站
  • 苏州建设工程检测协会网站网站建设与管理好学吗
  • 中国铁建企业门户网站合肥网站建设yjhlw
  • 创建一个网站网站空间费用mip网站怎么做匹配
  • 古交市住房和城乡建设局网站做网站的哪里好
  • 个人求职网站htmlai智能生成图片免费网站
  • 三亚市建设局网站公示资海网站建设
  • 做视频资源网站网站总体设计怎么写
  • 公司网站源码 带wap手机站平台公司有哪些
  • 为代理网站做网站手机app下载软件安装