`
lbfhappy
  • 浏览: 83205 次
社区版块
存档分类
最新评论

利用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( 001023255, (short10, (short10 );
                    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模板

    在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...

    POI读写excel文件+poi简单文档

    在这个“POI读写excel文件+poi简单文档”中,我们将深入探讨如何利用Apache POI进行Excel文件的读写操作。 首先,我们需要了解POI的主要组件:HSSF(Horrible Spreadsheet Format)用于处理旧版的BIFF格式(.xls)...

    利用POI读取excel写入到word

    要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...

    Java 利用poi输出Excel文件

    通过阅读《利用poi输出Excel文件.doc》文档,你可以获取更详细的步骤和示例,了解如何在实际项目中灵活运用Apache POI库生成满足需求的Excel文件。同时,文档中可能还包含了一些关于单元格样式设置、公式应用、图表...

    POI操作Excel文档,帮助文档

    ### POI操作Excel文档知识点详解 #### 一、POI简介 Apache POI 是 Apache 软件基金会的开源项目之一,它主要提供了一系列用于处理 Microsoft Office 文档的 Java API。POI 支持多种 Office 文件格式,其中较为成熟...

    java 利用POI 导入导出Excel

    前几天项目上需要加上导入导出,在网上找了一下,么有...于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不喜勿喷!

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    POI操作Excel完美生成水印

    本教程将深入探讨如何利用Apache POI来在Excel文件中完美地生成水印。水印通常用于标识文档的所有权或提供额外的安全层,而这里的水印是通过将文字转化为图片再添加到Excel工作表中实现的。 首先,我们需要了解...

    POI操作EXCEL文件

    - `POI实现Java程序操作Excel报表的应用分析.pdf`:该文档可能深入分析了在实际项目中如何利用POI处理Excel报表,包括性能优化和常见问题解决。 4. **poi3.7.zip**: 这是一个包含POI 3.7版本的压缩文件。开发者...

    java利用poi操作excel所需要的jar包

    在标题和描述中提到的"java利用poi操作excel所需要的jar包"是POI项目的核心依赖,包括以下几个部分: 1. **poi-3.14.jar**: 这是Apache POI的主要库,提供了对低级HSSF(Horrible Spreadsheet Format)的支持,用于...

    poi读取excel文件

    在Java编程环境中,Apache POI库是一个非常重要的工具,它允许开发者读取、写入以及修改...总的来说,Apache POI是Java处理Excel文件的强大工具,通过合理利用提供的库和源码示例,可以有效地读取和操作Excel数据。

    POI操作Excel的封装

    在这个场景中,"POI操作Excel的封装"指的是对POI API进行的高级抽象和简化,以便于开发人员更方便地处理Excel文件。通过反射和约定,可以创建一个易于使用的API,隐藏底层复杂的POI细节。 反射是Java编程语言中的一...

    最新poi操作excel文档

    在本文中,我们将深入探讨如何使用最新版本的Apache POI进行Excel文档的操作,包括创建、读取、修改和写入数据,以及一些高级功能。 1. **创建Excel工作簿** 使用Apache POI,你可以创建一个新的Excel工作簿对象,...

    android中poi生成word文档和excel文档

    XML可以更方便地进行数据操作和格式化,然后利用POI将其转换为用户友好的文档。 4. **文件操作**:在Android中,由于安全性和权限管理的限制,通常不会直接在内部存储或外部存储上操作文件,而是使用`AssetManager`...

    java利用poi生成excel报表、处理word文档

    在本场景中,我们关注的是如何利用POI来生成Excel报表以及处理Word文档。 一、Java POI与Excel报表生成 1. 创建Excel工作簿(Workbook):在Java中,我们首先需要创建一个`XSSFWorkbook`对象,它代表Excel工作簿。`...

    poi解析excel文件

    标题提到的"poi解析excel文件"是利用Apache POI 3.8版本进行Excel数据的读取和解析。 在Apache POI 3.8中,主要涉及以下核心概念: 1. **HSSF(Horrible Spreadsheet Format)**:这是Apache POI中处理旧版Excel...

    poi操作excel表格导入和导出

    在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...

    POI操作Excel常用方法总结

    这篇博客文章“POI操作Excel常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...

    struts2中利用poi导出excel

    总结起来,利用Struts2和Apache POI,我们可以方便地实现从Web应用中导出数据到Excel的功能。这涉及到对POI库的理解,以及Struts2 Action和Result的配置。通过这种方式,开发者可以为用户提供便捷的数据导出服务,...

    java 利用poi导出EXCEL

    Java中的Apache POI库是处理Microsoft Office格式文件的利器,特别是用于读取和写入Excel文件。本主题将深入探讨如何使用POI库导出EXCEL表格,以及如何结合提供的关键代码实现这一功能。 首先,我们需要理解Apache ...

Global site tag (gtag.js) - Google Analytics