`
jakey0613
  • 浏览: 24354 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

POI如何循環插入圖片

    博客分类:
  • java
阅读更多

最近遇到一個問題,特與大家一起分享一下,如果用POI對EXCEL進行操作,想要插入多張圖片。

網上找過很資料,大都是這樣寫:

public static void main(String[] args) {    
        FileOutputStream fileOut = null;    
        BufferedImage bufferImg = null;    
        BufferedImage bufferImg1 = null;    
        try {    
            // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray    
            // 读入图片1    
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();    
            bufferImg = ImageIO.read(new File("d:\\test11.jpg"));    
            ImageIO.write(bufferImg, "jpg", byteArrayOut);    
                
            // 读入图片2    
            ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();    
            bufferImg1 = ImageIO.read(new File("d:\\test22.png"));    
            ImageIO.write(bufferImg1, "png", byteArrayOut1);    
   
            // 创建一个工作薄    
            HSSFWorkbook wb = new HSSFWorkbook();    
            HSSFSheet sheet1 = wb.createSheet("test picture");    
            HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();    
            HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255,    
                    (short) 1, 1, (short) 5, 5);    
            anchor.setAnchorType(3);    
            HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 255, 255,    
                    (short) 6, 6, (short) 10, 10);    
            anchor1.setAnchorType(3);    
            // 插入图片1    
            patriarch.createPicture(anchor, wb.addPicture(byteArrayOut    
                    .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));    
            // 插入图片2    
            patriarch.createPicture(anchor1, wb.addPicture(byteArrayOut1    
                    .toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));    
   
            fileOut = new FileOutputStream("d:/workbook.xls");    
            // 写入excel文件    
            wb.write(fileOut);    
            fileOut.close();    
        } catch (IOException io) {    
            io.printStackTrace();    
            System.out.println("erorr : " + io.getMessage());    
        } finally {    
            if (fileOut != null) {    
                try {    
                    fileOut.close();    
                } catch (IOException e) {    
                    e.printStackTrace();    
                }    
            }    
        }    
    }    

 

 

試著用一個循環來插入圖片,不知道可我怎么試都不成功!是不是哪裡還少了什么。下面是我的代碼:

public static void main(String[] args) {
    FileOutputStream fileOut = null;
    BufferedImage bufferImg = null;
    BufferedImage bufferImg1 = null;
    try {
      //创建一个工作薄
      HSSFWorkbook wb = new HSSFWorkbook();
      HSSFSheet sheet1 = wb.createSheet("new sheet");
      //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
      for (int i = 0; i < 20; i++) {
        ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
        bufferImg = ImageIO.read(new File("c:\\wwwroot\\smeposV3\\images\\logo.jpg"));
        ImageIO.write(bufferImg, "jpg", byteArrayOut);

        //HSSFRow row = sheet1.createRow(2);
        HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
        HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, bufferImg.getWidth(), bufferImg.getHeight(), (short) 0, i, (short) 3, i+5);
        //插入图片
        patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
      }
      fileOut = new FileOutputStream("c:/workbook.xls");
      //写入excel文件
      wb.write(fileOut);
      fileOut.close();

    } catch (IOException io) {
      io.printStackTrace();
      System.out.println("io erorr : " + io.getMessage());
    } finally {
      if (fileOut != null) {

        try {
          fileOut.close();
        }
        catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
  }

 

如何循環加入圖片呢?請大家幫幫忙!謝謝了!

 

 

上面這個問題終於解決了,原來我把HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();這個對象放在循環裡去了,它只能聲明一次,下次再遇到,記住了!

1
1
分享到:
评论

相关推荐

    POI向excel中插入图片

    在本文中,我们将深入探讨如何使用POI库向Excel工作簿中插入图片。这将涵盖相关的API,步骤以及一些实用技巧。 首先,我们需要理解Excel的内部结构。在Excel文件中,图片是以OLE对象的形式存储的。POI提供了...

    java使用poi操作.doc word模板替换,循环插入表格

    本篇文章将深入探讨如何利用POI库在Word文档中进行模板替换以及循环插入表格的操作。 首先,我们需要理解Apache POI的工作原理。POI提供了HWPFOI(用于处理老版的.doc文件)和XWPF(用于处理新版的.docx文件)两个...

    POI操作Word中插入文本和图片

    4. 在段落中插入图片:创建一个`XWPFRun`对象,然后创建`XWPFPicture`并将其添加到段落中。 ```java XWPFRun pictureRun = paragraph.createRun(); XWPFPicture pictureInstance = paragraph.createPicture...

    Apache poi 根据word模板生成word报表 替换 循环列表 图片

    3. **插入图片**:Apache POI允许我们在Word文档中插入图片。首先,你需要将图片读入内存,这可以使用InputStream实现。然后,通过创建一个XWPFPictureData对象,将图片数据添加到文档的图片数据部分。最后,在需要...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    POI使用word模板文件循环输出行并导出word

    在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...

    freemarkerdemo 生成word 插入图片

    7. **FreeMarkerDemo**:这个文件可能是一个Java类,实现了Freemarker和Apache POI的集成,用于生成Word文档并插入图片。它可能包含了一个或者多个方法,如`generateWordWithImage()`,这个方法接收模板文件、数据...

    java poi 填充word(合并单元格,添加图片,设置字号)(csdn)————程序.pdf

    总结来说,这段代码展示了如何使用Java POI库创建一个动态Word文档生成器,它能够根据查询结果填充数据,合并单元格,调整文本样式,以及插入图片。这个功能对于生成报告、证书或任何需要自定义文本和图像的文档非常...

    itext往word里插入图片和画表格

    在这个场景中,我们将探讨如何使用iText在Word文档中插入图片和绘制表格。 首先,理解一个关键概念:iText本身并不直接支持Word格式。然而,由于Word文档可以被转换为或从OpenXML格式解析,我们可以通过处理这些XML...

    使用poi从数据库导出excel表的示例

    在实际应用中,我们还需要考虑性能优化,比如使用PreparedStatement防止SQL注入,批量插入数据以减少数据库交互次数,以及合理设置内存缓冲大小以避免内存溢出。此外,为了提供良好的用户体验,我们还可以添加错误...

    POI word docx 动态生成.pdf

    使用POI动态生成Word文档,可以在Java程序中方便地插入文本、图片以及其他复杂格式元素,同时也可以进行数据填充,如报告、信件模板的自动化生成。 描述中提到了POI与Freemarker的对比,其中POI的兼容性相对差一些...

    java根据word模板导出Word文件,插入图片表格都可以

    网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n实现换行。这些都不符合我的需求, 因为我要的是分段,而不是换行。...

    poi操作word表格

    在实际应用中,开发者通常会根据需求构建复杂的逻辑,如数据遍历、条件判断和循环,以实现自动化处理Word文档中的表格数据。Apache POI提供了丰富的API,使得这些操作变得相对简单。在进行开发时,务必查阅官方文档...

    POI 向 excel 写图片(2例子)

    通过这两个例子,你应该对如何使用Apache POI库向Excel文件中插入图片有了清晰的理解。请注意,实际应用中需要处理异常,确保文件路径的有效性,并根据需求调整图片大小和位置。此外,记得始终关闭打开的流和工作簿...

    freemarker模板导出word循环图片表格源码和详细教程

    在本教程中,我们将探讨如何利用Freemarker模板来导出Word文档,并实现循环插入图片和表格的功能。这对于需要批量生成定制化报告或者文档的应用场景非常有用。 首先,我们需要了解Freemarker的基本语法。在...

    java POI导出源码

    - **公式支持**:POI允许在单元格中插入Excel公式,如`=SUM(A1:A5)`。 - **图表和图像**:XSSF支持创建图表,HSSF则不支持。同时,可以添加图片到工作表,但需要注意不同版本的限制。 - **数据格式化**:可以定义...

    java 使用poi组件处理 excel word

    通过WordprocessingDocument类,我们可以添加新的段落、修改文本、插入图片,甚至创建和修改表格。这使得POI成为处理Word文档的强大工具。 四、动态生成Excel表格 在Java中,我们经常使用Excel模板来动态生成报告...

    java集成POI所需jar包

    此外,Apache POI还支持复杂的操作,如公式计算、样式设置、图表创建、图片插入等。通过深入学习和熟练使用POI库,Java开发者可以在不依赖Microsoft Office的情况下,轻松地处理大量Office文档,这对于数据处理、...

    根据poi导出excel能够正确运行

    - 插入图表、图片或超链接。 - 处理大数据量时,考虑使用Streaming Usermodel API以减少内存消耗。 - 处理已存在的Excel文件,读取数据并进行修改后再保存。 标签“导出excel”进一步强调了重点,这个项目可能是...

    poi-bin-3.15-20160924.zip

    - **图表和图像**:虽然POI对图表和图像的支持相对有限,但仍然可以创建和修改简单的图表,以及插入图片到工作表中。 - **事件模型**:对于处理大型文件,可以使用SXSSF的事件模型,仅保留最近使用的行在内存中,...

Global site tag (gtag.js) - Google Analytics