利用POI操作EXCEL文档(2)

昨天,我们看了一下POI操作EXCEL的简单例子,我们只是插入了一些字符串而已,但是现实的应用中,经常需要在EXCEL中插入图片或者图形.这个时候,应该怎么办呢,我们先看一下下面的例子
/*
 * Test3.java
 *
 * Created on 2007年9月13日, 上午9:14
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/

package test1;

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;

/**
 *
 * 
@author hadeslee
 
*/
public class Test3 {
    
    
/** Creates a new instance of Test3 */
    
public Test3() {
    }
    
public static void main(String[] args)throws Exception {
        
//声明一个工作薄
        HSSFWorkbook wb=new HSSFWorkbook();
        
//生成一个表格
        HSSFSheet sheet=wb.createSheet("表格1");
        
//生成一个列
        HSSFRow row=sheet.createRow(0);
        
//生成一个样式
        HSSFCellStyle style=wb.createCellStyle();
        
//设置这些样式
        style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
//生成一个字体
        HSSFFont font=wb.createFont();
        font.setColor(HSSFColor.VIOLET.index);
        font.setFontHeightInPoints((
short)16);
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        
//把字体应用到当前的样式
        style.setFont(font);
        
//声明一个画图的顶级管理器
        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
        
//填充单元格
        for(short i=0;i<5;i++){
            
//声明一个单元格
            HSSFCell cell=row.createCell(i);
            
switch(i){
                
case 0:
                    
//设置普通文本
                    cell.setCellValue(new HSSFRichTextString("普通文本"));
                    
break;
                
case 1:
                    
//设置为形状
                    HSSFClientAnchor a1 = new HSSFClientAnchor( 0, 0, 1023, 255, (short) 1, 0, (short) 1, 0 );
                    HSSFSimpleShape shape1 
= patriarch.createSimpleShape(a1);
                    
//这里可以设置形状的样式
                    shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
                    
                    
break;
                
case 2:
                    
//设置为布尔量
                    cell.setCellValue(true);
                    
break;
                
case 3:
                    
//设置为double值
                    cell.setCellValue(12.5);
                    
break;
                
case 4:
                    
//设置为图片]
                    URL url=Test3.class.getResource("hello.jpg");
                    insertImage(wb,patriarch,getImageData(ImageIO.read(url)),
0,4,1);
                    
break;
                    
            }
            
            
//设置单元格的样式
            cell.setCellStyle(style);
        }
        FileOutputStream fout
=new FileOutputStream("我的第一个EXCEL.xls");
        
//输出到文件
        wb.write(fout);
        fout.close();
    }
    
//自定义的方法,插入某个图片到指定索引的位置
    private static void insertImage(HSSFWorkbook wb,HSSFPatriarch pa,byte[] data,int row,int column,int index){
        
int x1=index*250;
        
int y1=0;
        
int x2=x1+255;
        
int y2=255;
        HSSFClientAnchor anchor 
= new HSSFClientAnchor(x1,y1,x2,y2,(short)column,row,(short)column,row);
        anchor.setAnchorType(
2);
        pa.createPicture(anchor , wb.addPicture(data,HSSFWorkbook.PICTURE_TYPE_JPEG));
    }
    
//从图片里面得到字节数组
    private static  byte[] getImageData(BufferedImage bi){
        
try{
            ByteArrayOutputStream bout
=new ByteArrayOutputStream();
            ImageIO.write(bi,
"PNG",bout);
            
return bout.toByteArray();
        }
catch(Exception exe){
            exe.printStackTrace();
            
return null;
        }
    }
}

POI里面处理图形或者图片的主要类是HSSFPatriarch,它负责管理一个表格里面所有的图片和图形,并且只能创建一个,如果你应用程序后来又创建了一个,那么将使以前创造的HSSFPatriarch所管理的图片和图形清除,所以一定要保留HSSFPatriarch的引用直到最后.
POI操作Excel 一、什么是POI Apache POI 是一种流行的API,可以使用Java读写MS Excel文件,可以使用Java读写MS Word和MS PowerPoint文件。 POI主要模块 模块名字 描述 HSSF 提供读写Microsoft Excel XLS格式(Microsoft Excel 97 (-2003))档案的功能 XSSF 提供读写Microsoft Excel OOXML XLSX格式(Microsoft Excel XML (2007+))档案的功能 SXSSF 阅读详情

相关推荐

Java语言利用POI读取excel文档,利用Freemarker建立word模板(带图片),excel每一行数据生成单个word文档,再利用POI合并成一个word文档

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

the blog of alunSemiconductor 2882

java导出Excel 改变部分字体颜色,合并单元格,加斜线等

sheet wb创建等不再赘述算了,复制粘贴下:Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(); 改变部分字体颜色:  Font font = wb.createFont(); font.setFontHeightInPoints((short

yuefenghui的博客 2701

利用POI在Excel文档任意单元格写入数据

在我们实际的开发中,表现层的解决方案虽然有多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。     Apache的Jakata项目的POI子项目,目前比较成熟的是HSSF接口,处理MSExcel对象。它不象我们仅仅是用csv生成的没有

linghao00的专栏 2552

POI针对Excel的各种特殊操作

String sheetName = "表名"; HSSFWorkbook hb = new HSSFWorkbook(); HSSFSheet sheet = hb.createSheet(sheetName); 1、合并单元格 CellRangeAddress region = new CellRangeAddress(0, 0, 0, 3); // 开始行,结束行,开始列,结束列 s...

南巷清风 317

56-FMC连接器电路设计

FMC连接器电路设计

weixin_66510961的博客 4723

告别调参烦恼:用Simulink手把手实现自适应模糊PID温度控制(附模型下载)

本文详细介绍了如何使用Simulink实现自适应模糊PID温度控制,解决传统PID调参难题。通过模糊推理引擎动态调整PID参数,系统能自动适应不同工况,显著提升控制精度和响应速度。文章包含完整的建模步骤、参数优化技巧和工业应用扩展,并附赠可下载模型,帮助工程师快速掌握这一智能控制技术。

weixin_30872499的博客 153

POI单元格顔色设定

先从单元格顔色设定开始介绍。单元格的顔色有前景色和背景色。 前景色的设定使用「HSSFCellStyle」类的「setFillForegroundColor」方法。 setFillForegroundColor public void setFillForegroundColor(short bg) set the foreground fill color Param

chssheng2007的专栏 9719

Allegro PCB设计实战:5分钟搞定DDR信号线的Match Group等长规则设置

本文详细介绍了在Allegro PCB设计中,如何快速为DDR信号线设置Match Group等长规则。通过实战演练,解析了从理解相对传输延迟原理、在规则管理器中创建Match Group,到设置合理容差和利用动态绕线指示的全流程,帮助工程师在5分钟内高效完成高速信号时序约束,提升设计可靠性与效率。

gg901的博客 1053

Java操作POI4.1.0向Excel添加图片兼容03(.xls)及07后(xlsx)两个版本

1.说明 此java程序是操作poi向excel添加图片,两个函数,分别是03的版本和07的版本,poi版本用的是4.1.,实测好用。 2.引入pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactI...

为谁伫立在风中 1602

离线安装WSL2系统

由于办公环境在内网环境中,需将开发环境部署到内网中。环境:内网:win10。

qq_40224400的博客 3510

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1229

poi插件操作office文档

1、poi-tl  这个插件可用于导入导出word文档,简单易用(附文档地址:http://deepoove.com/poi-tl/#example-article)  使用步骤: 1、添加maven依赖 &lt;dependency&gt; &lt;groupId&gt;com.deepoove&lt;/groupId&gt; &lt;artifactId&gt;poi-tl...

zhong12270107的博客 2342

EndNote导入文献出现带有大括号{}乱码的解决办法

进入word中的Endnote工具栏——Bibliography Preferences(位于Bibliography区块的右下角),就是那个输入杂志名的小三角形,在Temporary citation delimiters处修改变量的默认符号。将默认的大括号{}修改为文章中不回使用到的符号。原因:因为Endnote插入的参考文献在Word中的代码就是以大括号隔开的,当文章中出现了该符号,endnote就会自动比对Library中的书目,而此时endnote出现错误。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4万+

【详解】poi操作excel

​​ 是一个由​​维护的库,它允许 Java 程序读写 Microsoft Office 文档,包括 Excel、Word 和 PowerPoint。在本文中,我们将重点介绍如何使用 ​​POI​​ 库来操作 Excel 文档。​​POI​​ 是一个功能强大的库,它简化了 Java 程序对 Excel 文档的操作。通过上述示例,我们可以看到如何轻松地读取和写入 Excel 文档。

牛肉胡辣汤 2297

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7890

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poi操作 excel 中文API文档

poi操作 excel 中文API文档 依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <depende

Mr_going的博客 2381

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

POI操作Excel常用方法总结

一、 POI简介             Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况             HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为

huazhangena的专栏 11万+

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...

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java中POI操作Excel常用方法

一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对MicrosoftOffice格式档案读和写的功能。 二、 HSSF概况 HSSF 是HorribleSpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和e

zxh66的专栏 1万+

使用poi操作excel详解

POI工具使用

qq_45887180的博客 9174

POI操作EXCEL文档使用及踩坑

java POI使用及踩坑 1. POI的下载 下载地址 https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.1.2-20200217.zip 随便选择一个镜像地址下载。 如果是使用的maven则可以到maven仓库复制一下 https://mvnrepository.com/artifact/org.apache.poi/poi/4.1.2 <!-- https://mvnrepository.com/artifact/

小狐狸的博客 1285

POI 操作 EXCEL 总结

一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和e

nongmin130的专栏 1676
上一篇: 利用POI操作EXCEL文档(1)
下一篇: EJB初学日记(6)
hadeslbf
博客等级 码龄20年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值