POI 导出到excel(包含图片,合并)

Springboot集合POI导出多sheet的Excel表格 POI整合Springboot生成Excel文件 阅读详情

 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
 import java.net.URL;
 import javax.imageio.ImageIO;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
 import org.apache.poi.hssf.usermodel.HSSFFont;
 import org.apache.poi.hssf.usermodel.HSSFPatriarch;
 import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.HSSFColor;
/**
     *
     * <p>Description: 将活动导出到excel</p>
     * @param response
     * @param list
     * @throws IOException
     */
    public void exportExcel(HttpServletResponse response,CmActivities activity ,List<MdItems> listItem) throws IOException {
     HSSFWorkbook workbook = new HSSFWorkbook ();// 创建一个Excel文件
          HSSFSheet sheet = workbook.createSheet(activity .getActivitySubject());// 创建一个Excel的Sheet
           sheet.setColumnWidth(0, 40 * 256);
           sheet.setColumnWidth(1, 40 * 256);
           sheet.setColumnWidth(2, 20 * 256);
           //row 1 - activitySublect    -----------------------start
          HSSFRow row1 = sheet.createRow(0);
          HSSFCell cell1 = row1.createCell(0);
           //活动标题
           cell1.setCellValue( activity.getActivitySubject());
           //合并列
          CellRangeAddress region1= new CellRangeAddress(0, 0, 0, 2);
           sheet.addMergedRegion( region1);
           row1.setHeightInPoints(40);
           //style
          HSSFCellStyle style1= workbook.createCellStyle();
           style1.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
           style1.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
          HSSFFont font1 = workbook.createFont();
//        font.setFontName("华文行楷");//设置字体名称
           font1.setFontHeightInPoints(( short)28);//设置字号
           font1.setColor(HSSFColor.RED. index);//设置字体颜色
           style1.setFont( font1);
           cell1.setCellStyle( style1);
          
           //row 1 - activitySublect    -----------------------end
          
           //row 2  - activity Date      -----------------------start
          HSSFRow row2 = sheet.createRow(1);
          HSSFCell cell2 = row2.createCell(1);
//        HSSFCell cell2_0 = row2.createCell(0);
           //img    --start
          ByteArrayOutputStream outStream = new ByteArrayOutputStream();
           // 将图片写入流中
          BufferedImage bufferImg = ImageIO.read(getInputStream(activity .getActivityPictrueUrl()));
          ImageIO. write(bufferImg, "PNG", outStream);
           // 利用HSSFPatriarch将图片写入EXCEL
          HSSFPatriarch patri = sheet.createDrawingPatriarch();
          HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,
          ( short) 0, 1, (short ) 1,3);
           patri.createPicture( anchor, workbook.addPicture(
           outStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
           //img   --  end
          
           cell2.setCellValue( "活动时间:" +DateUtil.getDateTimeCN (activity .getStartDate())+" 至 "+DateUtil.getDateTimeCN (activity .getEndDate()));
           //合并列
          CellRangeAddress region2= new CellRangeAddress(1, 1, 1, 2);
           sheet.addMergedRegion( region2);
          
           // 合并列
          CellRangeAddress region2_1 = new CellRangeAddress(1, 2, 0, 0);
           sheet.addMergedRegion( region2_1);
           row2.setHeightInPoints(40);
           //style
          HSSFCellStyle style2= workbook.createCellStyle();
           style2.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
           style2.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
           cell2.setCellStyle( style2);
          
           //row 2  - activity Date      -----------------------end
          
           //row 3   - activityContent       -----------------------start
          HSSFRow row3 = sheet.createRow(2);
          HSSFCell cell3 = row3.createCell(1);
           cell3.setCellValue( activity.getActivityContent());
           // 合并列
          CellRangeAddress region3 = new CellRangeAddress(2, 2, 1, 2);
           sheet.addMergedRegion( region3);
//        sheet.setColumnWidth(1, 31 * 256);//设置第一列的宽度是31个字符宽度
           row3.setHeightInPoints(60); //设置行的高度是50个点
          HSSFCellStyle style3= workbook.createCellStyle();
           style3.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
           style3.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
           style3.setWrapText( true);//自动换行
           cell3.setCellStyle( style3);
          
           //row 3   - activityContent       -----------------------end
          
           //row 4   - items List header  -------------------------start
          HSSFRow row4 = sheet.createRow(3);
          HSSFCell cell4_1 = row4.createCell(0);
          HSSFCell cell4_2 = row4.createCell(1);
          HSSFCell cell4_3 = row4.createCell(2);
           cell4_1.setCellValue( "商品图片" );
           cell4_2.setCellValue( "商品名称" );
           cell4_3.setCellValue( "商品价格" );
          
          HSSFCellStyle style4= workbook.createCellStyle();
           style4.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
           style4.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
           style4.setWrapText( true);//自动换行
           style4.setFillForegroundColor(IndexedColors. SKY_BLUE.getIndex());
           style4.setFillPattern(CellStyle. SOLID_FOREGROUND);
          HSSFFont font4 = workbook.createFont();
//        font.setFontName("华文行楷");//设置字体名称
           font4.setFontHeightInPoints(( short)15);//设置字号
           font4.setBold( true);
           style4.setFont( font4);
          
//        cell4.setCellStyle(style4);
           cell4_1.setCellStyle( style4);
           cell4_2.setCellStyle( style4);
           cell4_3.setCellStyle( style4);
           //row 4   - items List header  -------------------------end
          
           //row 5    - items List   -------------------------start
           for (int i = 0; i < listItem .size(); i++) {
              MdItems items = listItem.get( i);
              HSSFRow row5 = sheet.createRow( i+4);
              HSSFCell cell5_1 = row5 .createCell(0);
              HSSFCell cell5_2 = row5.createCell(1);
              HSSFCell cell5_3 = row5.createCell(2);
              
               row5.setHeightInPoints(80);
               //商品名称
               cell5_2.setCellValue( items.getItemName());
               //商品价格
                cell5_3.setCellValue( items.getSalePrice().toString());
              
              HSSFCellStyle style5=workbook .createCellStyle();
                style5.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
                style5.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
               style5.setWrapText( true);//自动换行
              
               cell5_2.setCellStyle( style5);
               cell5_3.setCellStyle( style5);
               // img --start
              ByteArrayOutputStream outStream_item = new ByteArrayOutputStream();
               // 将图片写入流中
              BufferedImage bufferImg_item = ImageIO.read(getInputStream(items .getSmallPictureUrl()));
              ImageIO. write(bufferImg_item, "PNG", outStream_item);
               // 利用HSSFPatriarch将图片写入EXCEL
              HSSFPatriarch patri_item = sheet.createDrawingPatriarch();
              HSSFClientAnchor anchor_item = new HSSFClientAnchor(0, 0, 0, 0, (short ) 0, i +4, (short) 1, i+5);
               patri_item.createPicture(anchor_item , workbook.addPicture(outStream_item .toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
               // img -- end
          }
           //row 5    - items List   -------------------------end
             
        // 第六步,将文件存到指定位置 
        try 
        { 
            String excelName=activity .getActivitySubject()+".xls";
            response.addHeader( "Content-Disposition", "attachment;filename="  
                    + new String(excelName.getBytes("gb2312" ), "ISO-8859-1" )); 
//            response.addHeader("Content-Length", "" + 1024); 
            response.setContentType("application/vnd.ms-excel;charset=utf-8" ); 
            OutputStream out = response.getOutputStream(); 
            workbook.write( out); 
            out.close(); 
        } 
        catch (Exception e ) 
        { 
            e.printStackTrace(); 
        } 
    }
    public static  InputStream getInputStream(String path){ 
        InputStream inputStream=null ; 
        HttpURLConnection httpURLConnection=null ; 
        try{ 
            URL url= new URL(path ); 
            if(url !=null){ 
                httpURLConnection=(HttpURLConnection) url.openConnection(); 
                httpURLConnection.setConnectTimeout(3000); 
                httpURLConnection.setRequestMethod("GET" ); 
                int responseCode=httpURLConnection .getResponseCode(); 
                if(responseCode ==200){ 
                    inputStream=httpURLConnection .getInputStream(); 
                } 
            } 
             
             
        } catch(Exception e ){ 
            e.printStackTrace(); 
        } 
     
        return inputStream ; 
         
    } 

Java语言利用POI读取excel文档,利用Freemarker建立word模板(带图片),excel每一行数据生成单个word文档,再利用POI合并成一个word文档 需求: 现有一个excel文档,该文档从第三行开始,每一行代表一个化石及其相关的登记资料,如图1,现在需要将每一行数据的内容,填写到对应的word文档中,并将入库照片编号对应的照片插入对应位置,如图2,最后要求不能生成单个的word文档,因为文档个数多了,不方便整理和打印,需要合并成一个或者多个; 图1: 图2: 实现思路: Java语言利用... 阅读详情

相关推荐

Java POI导出Excl个人简历,单元格合并、插入图片等

最近的任务-导出Excel个人简历部分。觉得挺简单的,无非就是查找个人详情,构建Excel,response浏览器下载就完成了。但是要在excl中加入用户头像,还有就是合并单元格与单元格样式问题搞了好久。在网上搜了一下确实没有发现比较好的资料,所以将我解决问题的过程记录下来,帮助遇到这个问题的博友们。 首先根据网上找到的大佬提供的demo测试了一下 import java.awt.image...

马句 1953

通过poi导出带图片的Excel表格

1、工具类的编写以及调用:java poi导出excel 带图片_桥边红药-优快云博客_java导出excel图片

weixin_39386430的博客 947

机器学习之性能度量

废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。

hustqb的博客 4628

POI在Excel中导出图片(含多图)

Java POI在Excel中导出图片(含多图)

fan___的博客 6888

iPad秒变Mac副屏的隐藏技巧:用BetterDisplay实现无线竖屏+90度锁定

本文详细介绍了如何利用BetterDisplay软件突破苹果原生“随航”(Sidecar)功能的限制,将iPad无线设置为Mac的竖屏副屏,并实现90度方向锁定。通过创建虚拟显示器、配置分辨率与旋转参数,并校准鼠标指针,用户可以高效利用iPad的纵向空间进行文档阅读、编码等工作,显著提升多屏协作效率。

weixin_29266647的博客 603

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入

本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记

RaphaelCeo的博客 1545

(1)Java使用POI导出excel(含图片)

Java 使用注解导出excel(含图片)

weixin_44394502的博客 3540

5分钟搞定!用ZLMediaKit+GB28181搭建低成本外网视频监控(含避坑指南)

本文详细介绍了如何利用开源ZLMediaKit流媒体服务器与国标GB28181协议,快速搭建低成本、可外网访问的企业级视频监控系统。文章提供了从服务端部署、设备配置到外网访问优化的完整实战指南,并重点分享了网络配置、性能调优及常见问题的避坑方案,帮助用户实现高清视频流的稳定推送与多格式播放。

bush的博客 332

POI导出文字和图片到Excel表格

POI导出文字和图片到Excel表格

m0_73505556的博客 1737

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

本文详细介绍了在Linux系统下为Qt 5.12.8单独编译qtvirtualkeyboard模块的完整解决方案。通过分析模块缺失原因、提供精准的编译步骤和常见问题处理,帮助开发者高效解决虚拟键盘模块缺失问题,避免重新编译整个Qt源码的繁琐过程。

weixin_29248611的博客 458

基于 ESP32+IMU+BLE HID 的低延迟无线体感游戏控制器设计与实现

本文设计的基于 ESP32 的低延迟无线体感游戏控制器,通过合理的硬件选型与软件优化,实现了体感姿态感知与无线低延迟传输的核心功能。硬件上采用 ESP32+MPU6050+TP4056 的低成本方案,接线简单、便携性强;软件上通过轻量化库、互补滤波算法与非阻塞 BLE 传输,有效降低了系统延迟,满足体感游戏的使用需求。

weixin_42300449的博客 400

poi实现excel文件导入导出(基本数据导出、含格式导出、含批注导出、含图片图表导出)——springboot

POI(Poor Obfuscation Implementation)是一个用于操作Microsoft Office格式文件的Java库。它提供了对Excel、Word和PowerPoint文件的读写功能,POI是一个功能强大的Java库,可以帮助开发人员在Java应用程序中处理Excel文件。无论是创建、编辑、读取还是导出数据,POI都提供了丰富的功能和灵活的接口。

qq_45778079的博客 7684

Calibre LVS 问题解析

LVS常见问题与解决办法

m0_61544122的博客 2万+

Java操作文件二(excel)

一、jxl读写excel需要jxl.jar包package com.primeton.eos.sdic.file; import java.awt.image.BufferedImage;import java.io.File; import java.util.Date; import javax.imageio.ImageIO; i

hujingn的博客 1699

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9371

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java导出Excel(Poi详解)

福利: 直接可用的导出,自己根据下边的讲解自行修改,不修改直接用也可以! https://blog.youkuaiyun.com/w893932747/article/details/89370894 一、POI简介: Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 HSSF 是Horrible S...

养只狗名叫猫 16万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

poi导出excel 并实现合并单元格

原图 合并之后图片 工具类ExportExcel package com.daxiao.test.util; /** Created by Bob on 2021/5/12. */ import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map

weixin_39708283的博客 3213

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Freemarker整合poi导出带有图片的Excel教程

序言 前一篇文章《Freemarker导出复杂Excel图文教程》,讲解了使用Freemarker导出复杂的Excel,本文将在前文的基础之上,讲解使用Freemarker导出Excel后,在整合poi插入图片到Excel,从而实现Freemarker导出带有图片的Excel工具。 为什么要做这个工具呢? 因为Freemarker是不支持导出带有图片的Excel的,不支持的原因是Freemarke...

五道口 5923

Java使用POi导出Excel(包含图片)

Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能,介绍poi导出excel功能实现案例,算比较常用的功能实现以及导出excel需要注意的地方,采用的是poi-3.8-20120326.jar,poi-ooxml-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar 输出表格 poi输出excel最基本是输出t

qq_26492735的博客 2425

JAVA POI自动导出数据和图片到excel(单元格合并)

JAVA POI自动导出数据和图片到excel(单元格合并) 参考链接: POI XSSFWorkbook读取网络中的图片资源导入EXCEL中 controller @PostMapping("/exportExcel") public void exportExcel(@RequestBody ApprovalRequest request, HttpServletResponse response) throws Exception { String fileNa

mutourenoo的专栏 1293

poi导出Excel同时动态合并单元格。

poi导出单元格的同时合并相同内容 周一刚写了个poi打出图片的功能,然后看我刚写完这一个模块,就把其他页面导出表格的也交给我了。 页面需求就是这样 因为刚开始接触poi的我并不熟悉,所以一开始也是百度了很多帖子,最后选了这位大佬的方法。原文链接各位也可以看看这个,比我介绍的更详细。 核心思想就是创建一个工具类,去记录上一行的内容,记录开始合并的行标,列标,插入时和上一行的内容进行比较,不相同则合并,同时更新行标和列标 工具类的代码如下: import lombok.Data; @Data public

qq_38121310的博客 2336

poi-3.17版本 和若依框架结合--excel导出,excel图片导出

使用若依导出,客户提出要导出图片,原导出不支持,只能用原生的写,返回前端格式要和若依的保持一致,在网上找了一些,结合一下,在若依里面这样使用:图片导出位置在序号后面第一列。 依赖包和版本号:poi--3.17版本 <poi.version>3.17</poi.version> <dependency> <groupId>org.apache.poi</groupId&

涵山韵海的博客 4054

java 利用poi根据excel模板导出数据(一)

前言 作为B端开发,导出数据是不可以避免的,但是有时候需求很变态,表头复杂的一笔,各种合并单元格,如下图: 这些虽说用代码可以实现,但是很繁琐,而且代码并不能通用,遇到更复杂的更难受。为了追求更简单,高效率,我们需要换个方法-------利用模板导出数据! ?????能用模板????? sure! 正文开始 1.需要用到的包 poi <!-- json4excel,poi --> <dependency> ..

stuild stuil 的博客 1万+

poi导出Excel与项目的结合-案例(包含图片的设置)

不管是xml的导入和导出还是Excel的导入和导出,对应的无非都是文件的解析和下载,下面来讲解的主要是导出(下载) 导入:上传---》解析并组装javaBean(javaBeanList)--》插入数据库(多数为数据库) 导出:查询需要下载的数据--》将JavaBean生成对应的文件(eg:xml、poi、json等)--》下载 poi导出--即下载poi 前台:

习惯有你&的博客 3135

excel poi 实现图片导出

引入excel poi的依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> /** * int MOVE_AND_RESIZE = 0;//跟随单元格扩大或者缩小,就是你拖动单元格的时候,图.

那些乐趣的博客 3410
上一篇: JS 获取Form表单信息序列化
下一篇: jquery mobile 加载器 显示和隐藏
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值