`

主题:POI 使用总结

阅读更多

http://www.iteye.com/topic/211707

 

主题:POI 使用总结

 

之前用POI做了一段时间的报表,也对POI的一些方法重写了,用起来还算方便。也没什么特别的,主要就是对HSSFWorkbook,HSSFSheet,HSSFRow, HSSFCell的操作了,掌握了对这四个东西的控制,你想怎么写就怎么写。
1,首先写一个abstract class用来overwrite HSSF。

Java代码 复制代码
  1. package  com.eagle.excel;  
  2.   
  3. import  java.util.ArrayList;  
  4.   
  5. import  org.apache.poi.hssf.usermodel.HSSFCell;  
  6. import  org.apache.poi.hssf.usermodel.HSSFCellStyle;  
  7.   
  8. /**  
  9.  * @author eyas  
  10.  * @version 1.0  
  11.  * @date Apr 28, 2007 10:41:26 PM  
  12.  */   
  13. public   abstract   class  ExportInfoToExcel  
  14. {     
  15.         /**  
  16.          * create report header  
  17.         */   
  18.     protected   abstract   void  createHead();  
  19.   
  20.         /**  
  21.          *create report body  
  22.          *columns:table header  
  23.          *itemList:row data  
  24.          */   
  25.     protected   abstract   void  createBody(String[] columns, ArrayList itemlist);  
  26.   
  27.         /**  
  28.          *create report footer, ex:someone total information.  
  29.          */   
  30.     protected   abstract   void  createFoot();  
  31.            
  32.         /**  
  33.          * write data to a Excel cell.this method is overloadabled.  
  34.          */   
  35.     public   void  createCell(HSSFCellStyle cellStyle, HSSFCell cell, String  value)  
  36.     {  
  37.         cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
  38.         cell.setCellStyle(cellStyle);  
  39.         cell.setCellValue(value);  
  40.     }  
  41. }  
package com.eagle.excel;

import java.util.ArrayList;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;

/**
 * @author eyas
 * @version 1.0
 * @date Apr 28, 2007 10:41:26 PM
 */
public abstract class ExportInfoToExcel
{	
        /**
         * create report header
        */
	protected abstract void createHead();

        /**
         *create report body
         *columns:table header
         *itemList:row data
         */
	protected abstract void createBody(String[] columns, ArrayList itemlist);

        /**
         *create report footer, ex:someone total information.
         */
	protected abstract void createFoot();
         
        /**
         * write data to a Excel cell.this method is overloadabled.
         */
	public void createCell(HSSFCellStyle cellStyle, HSSFCell cell, String  value)
	{
		cell.setEncoding(HSSFCell.ENCODING_UTF_16);
		cell.setCellStyle(cellStyle);
		cell.setCellValue(value);
	}
}



2,再写一个interface 用来给Excel 传递数据,并生成Excel file,

Java代码 复制代码
  1. package  com.eagle.excel;  
  2.   
  3. import  java.io.File;  
  4. import  java.util.ArrayList;  
  5. import  java.util.Calendar;  
  6.   
  7. /**  
  8.  * @author eyas  
  9.  * @version 1.0  
  10.  * @date Apr 28, 2007 10:41:26 PM  
  11.  */   
  12. public   interface  ExportInfoInterface  
  13. {  
  14.   
  15.     public   void  setDate(Calendar startDate);  // report print date   
  16.     public   void  setColumns(String[] columns);  // report columns   
  17.   
  18.     public   void  setDataList(ArrayList itemList);  //data   
  19.   
  20.     public   void  produceExportFile(File exportfile)  throws  Exception; //create excel file   
  21.     public   void  setOtherArg(Object arg1); // other arguments   
  22. }  
package com.eagle.excel;

import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;

/**
 * @author eyas
 * @version 1.0
 * @date Apr 28, 2007 10:41:26 PM
 */
public interface ExportInfoInterface
{

	public void setDate(Calendar startDate); // report print date
	public void setColumns(String[] columns); // report columns

	public void setDataList(ArrayList itemList); //data

	public void produceExportFile(File exportfile) throws Exception;//create excel file
	public void setOtherArg(Object arg1);// other arguments
}



3,然后就可以写一个类,用来接收数据,extends ,implements 上面的abstract class and interface.

Java代码 复制代码
  1. package  com.eagle.excel;  
  2.   
  3. import  java.io.File;  
  4. import  java.io.FileOutputStream;  
  5. import  java.io.IOException;  
  6. import  java.util.ArrayList;  
  7. import  java.util.Calendar;  
  8. import  org.apache.poi.hssf.usermodel.HSSFRow;  
  9. import  org.apache.poi.hssf.usermodel.HSSFSheet;  
  10. import  org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  11. import  org.apache.poi.hssf.util.Region;  
  12.   
  13. /**  
  14.  * @author eyas  
  15.  * @version 1.0  
  16.  * @date Apr 28, 2007 10:43:26 PM  
  17.  */   
  18. public   class  CreateExcelFile  extends  ExportInfoToExcel  implements  ExportInfoInterface  
  19. {  
  20.     private  HSSFWorkbook workbook;  
  21.     private  HSSFSheet sheet;  
  22.     private  ArrayList dataList;  
  23.     private  Calendar date;  
  24.         private  String[] columns;  
  25.         private   int  lineX =  0 ;  
  26.     public  CreateExcelFile ()  
  27.     {  
  28.            //initialized someone arguments   
  29.     }  
  30.   
  31.     @Override   
  32.     protected   void  createBody()  
  33.     {     
  34.         HSSFRow bodyTile = sheet.createRow(lineX++);  
  35.         for  ( int  i =  0 ; i < columns.length; i++)  
  36.         {  
  37.             createCell(bodyTile.createCell((short ) i), columns[i]);  
  38.         }  
  39.         HSSFRow bodyRow;  
  40.         for  ( int  i =  0 ; i < dataList.size(); i++)  
  41.         {  
  42.             bodyRow = sheet.createRow(lineX++);  
  43.                     createCell(null ,bodyRow.createCell(( short 0 ),(i+ 1 ));  
  44.                     createCell(null ,bodyRow.createCell(( short 1 ), "eyas" );  
  45.                     createCell(null ,bodyRow.createCell(( short 2 ), "software" );  
  46.                         ...  
  47.         }  
  48.     }  
  49.   
  50.     @Override   
  51.     protected   void  createFoot()  
  52.     {  
  53.         HSSFRow totalRow = sheet.createRow(lineX++);  
  54.                 createCell(null ,bodyRow.createCell(( short 0 ), "total data" );  
  55.     }  
  56.   
  57.     @Override   
  58.     protected   void  createHead()  
  59.     {  
  60.         lineX = 0 ;  
  61.         sheet.addMergedRegion(new  Region( 0 , ( short 0 0 , ( short 12 ));  
  62.         HSSFRow headRow0 = sheet.createRow(lineX++);  
  63.         createCell(null ,headRow0.createCell(( short 0 ),  "My Excel Report" );  
  64.   
  65.     }  
  66.   
  67.     public   void  produceExportFile(File exportfile)  throws  Exception  
  68.     {  
  69.         try   
  70.         {  
  71.             workbook = new  HSSFWorkbook();  
  72.             sheet = workbook.createSheet("First Page" );  
  73.             createHead();  
  74.             createBody();  
  75.             FileOutputStream fw = new  FileOutputStream(exportfile);  
  76.             workbook.write(fw);  
  77.             fw.flush();  
  78.             fw.close();  
  79.             workbook = null ;  
  80.             sheet = null ;  
  81.             fw = null ;  
  82.                          System.out.println("Export success!" );  
  83.         } catch  (IOException ioe)  
  84.         {  
  85.             ioe.printStackTrace();  
  86.         }catch  (Exception e)  
  87.         {  
  88.             e.printStackTrace();  
  89.         }  
  90.     }  
  91.   
  92.     public   void  setColumns(String[] columns)  
  93.     {  
  94.         this .columns = columns;  
  95.     }  
  96.   
  97.     public   void  setDataList(ArrayList dataList)  
  98.     {  
  99.         this .dataList = dataList;  
  100.     }  
  101.   
  102.     public   void  setOtherArg(Object arg1)  
  103.     {  
  104.   
  105.     }  
  106.   
  107.     public   void  setDate(Calendar date)  
  108.     {  
  109.         this .date = date;  
  110.     }  
  111.   
  112. }  
package com.eagle.excel;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;

/**
 * @author eyas
 * @version 1.0
 * @date Apr 28, 2007 10:43:26 PM
 */
public class CreateExcelFile extends ExportInfoToExcel implements ExportInfoInterface
{
	private HSSFWorkbook workbook;
	private HSSFSheet sheet;
	private ArrayList dataList;
	private Calendar date;
        private String[] columns;
        private int lineX = 0;
	public CreateExcelFile ()
	{
           //initialized someone arguments
	}

	@Override
	protected void createBody()
	{	
		HSSFRow bodyTile = sheet.createRow(lineX++);
		for (int i = 0; i < columns.length; i++)
		{
			createCell(bodyTile.createCell((short) i), columns[i]);
		}
		HSSFRow bodyRow;
		for (int i = 0; i < dataList.size(); i++)
		{
		    bodyRow = sheet.createRow(lineX++);
                    createCell(null,bodyRow.createCell((short) 0),(i+1));
                    createCell(null,bodyRow.createCell((short) 1),"eyas");
                    createCell(null,bodyRow.createCell((short) 2),"software");
                        ...
		}
	}

	@Override
	protected void createFoot()
	{
		HSSFRow totalRow = sheet.createRow(lineX++);
                createCell(null,bodyRow.createCell((short) 0),"total data");
	}

	@Override
	protected void createHead()
	{
		lineX = 0;
		sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 12));
		HSSFRow headRow0 = sheet.createRow(lineX++);
		createCell(null,headRow0.createCell((short) 0), "My Excel Report");

	}

	public void produceExportFile(File exportfile) throws Exception
	{
		try
		{
			workbook = new HSSFWorkbook();
			sheet = workbook.createSheet("First Page");
			createHead();
			createBody();
			FileOutputStream fw = new FileOutputStream(exportfile);
			workbook.write(fw);
			fw.flush();
			fw.close();
			workbook = null;
			sheet = null;
			fw = null;
                         System.out.println("Export success!");
		} catch (IOException ioe)
		{
			ioe.printStackTrace();
		}catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public void setColumns(String[] columns)
	{
		this.columns = columns;
	}

	public void setDataList(ArrayList dataList)
	{
		this.dataList = dataList;
	}

	public void setOtherArg(Object arg1)
	{

	}

	public void setDate(Calendar date)
	{
		this.date = date;
	}

}


仅对产生Excel报表,使用POI几个步骤的总结,不能保证代码完全 runable,如有改进建议,敬请发表。

分享到:
评论

相关推荐

    POI操作Excel常用方法总结

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

    poi3.9读写EXCEL

    1. 创建新Workbook:使用`WorkbookFactory.create()`方法,可以创建一个新的空Workbook对象,或者通过`Workbook.createSheet()`创建新的Sheet。 2. 添加Row和Cell:在Sheet对象上,我们可以调用`createRow()`和`...

    利用java poi操作ppt

    总结,Java POI为开发者提供了一种方便的方式来自动化处理PowerPoint文件,无论是创建全新的演示文稿,还是编辑已有的PPT文件,都能灵活应对。通过阅读和实践提供的示例代码,你将能够更好地掌握这一技能。

    Poi-SoundBoard:Poi Soundboard Android 应用程序

    总结来说,Poi-SoundBoard项目展示了Java在Android应用开发中的广泛运用,包括音频资源的管理、用户交互的实现、界面设计和性能优化等多个方面。通过这个项目,开发者可以深入理解Android开发的核心技术,并以此为...

    POI.rar_POI_POI word_java poi word

    总结来说,Apache POI是一个强大的Java库,用于处理Microsoft Office格式的文件,特别是Excel和Word。通过使用POI,开发者可以轻松地在Java应用程序中实现对这些文件的读写操作,且无需依赖于Microsoft Office软件...

    百度地图POI数据——北京

    这个标题揭示了我们所讨论的主题是关于百度地图的POI(Point of Interest)数据,具体聚焦于北京市的区域。POI数据是地图服务中的一个重要组成部分,它包含了地图上的兴趣点信息,如餐馆、酒店、公园、商业设施等...

    利用POI将word转换成html实现在线阅读

    本主题聚焦于如何利用Apache POI库将Word文档(.doc)转换为HTML格式,以便实现在线阅读。Apache POI是Java领域的一个强大工具,它支持Microsoft Office的文件格式读写,包括Word、Excel和PowerPoint等。 首先,让...

    java_poi操作excel

    **总结**:以上内容详细介绍了如何使用 Apache POI 在 Java 程序中创建和操作 Excel 文件。从创建 Excel 文件到设置单元格的内容,再到添加文档的摘要信息和批注,这些操作都是日常开发中非常实用且常见的功能。掌握...

    poi点入库处理,按照地市导入处理,自己需要创建表sa_poi_annotation

    2. **读取Excel文件**:使用NPOI打开并读取Excel文件,遍历工作表中的每一行数据,获取POI的名称、坐标和地市信息。 ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 加载Excel文件 var file =...

    好用的poi包无冲突可转html可操作书签3.9docx

    在“好用的poi包无冲突可转html可操作书签3.9docx”这个主题中,我们主要关注的是如何使用Apache POI库在Java环境中操作DOCX文档,并将其转换为HTML格式,同时还能处理文档中的书签。 1. Apache POI简介: Apache ...

    POI和ASPOSE文件转换在线预览

    "POI和ASPOSE文件转换在线预览"这个主题涉及到两个关键的Java库:Apache POI和Aspose,它们都是用于处理Microsoft Office文件的强大工具。本文将深入探讨这两个库的功能、用法以及如何利用它们实现文件格式转换并...

    基于ssm框架的poi导入导出

    本主题聚焦于"基于SSM框架的POI导入导出",这是一项在业务系统中常用的技术,用于处理大量数据的导入与导出,如Excel表格。 首先,我们需要理解SSM框架的构成: 1. **Spring**:Spring是核心容器,提供依赖注入...

    poi解析导入word (简单Demo使用)

    在"poi解析导入word (简单Demo使用)"这个主题中,我们将深入探讨如何使用Apache POI库来读取、修改和创建Word文档。这个项目包含了一个POM文件(项目对象模型),一个Demo示例,以及一个docx文件,提供了完整的导入...

    poi导出,导出excel文件

    在“ poi导出,导出excel文件 ”这个主题中,我们将主要关注XSSF,因为它是现代Excel文件的标准。导出Excel文件的基本步骤如下: 1. **添加依赖**:首先,你需要在你的项目中引入Apache POI的依赖。如果你使用Maven...

    【全国重点城市POI数据】-武汉数据-体育休闲服务.zip

    描述中的“【全国重点城市POI数据】-武汉数据-体育休闲服务”进一步明确了数据集的主题,即这是一份关于武汉地区的体育休闲设施的Point of Interest (POI) 数据。POI数据是指地图上的兴趣点,通常包括地点的名称、...

    基于poi的excel导入导出封装

    在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...

    poi 下列列表

    在这个“poi 下拉列表”主题中,我们将深入探讨如何利用Apache POI创建Excel文件中的下拉列表,以及如何在实际应用中使用这些下拉列表。 首先,下拉列表在Excel中被称为数据验证(Data Validation),它们提供了一...

    get wc_高德poi爬取矩形选取面积_

    本文将深入探讨“get wc_高德poi爬取矩形选取面积”这一主题,旨在帮助你理解和实现从高德地图API获取特定区域内指定类型的点兴趣(POI)信息。 首先,"高德 poi 爬取矩形选取面积"指的是利用高德地图的开放API,...

    百度地图Poi搜索功能(含自动检索附近地址)

    本文将深入探讨“百度地图Poi搜索功能(含自动检索附近地址)”,这一主题涉及到Android平台上的百度地图SDK,以及如何实现Poi(Point of Interest,兴趣点)搜索和自动定位功能。 首先,我们要了解的是**Android...

Global site tag (gtag.js) - Google Analytics