`
is.eagle
  • 浏览: 23576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

POI 使用总结

    博客分类:
  • JAVA
阅读更多
  之前用POI做了一段时间的报表,也对POI的一些方法重写了,用起来还算方便。也没什么特别的,主要就是对HSSFWorkbook,HSSFSheet,HSSFRow, HSSFCell的操作了,掌握了对这四个东西的控制,你想怎么写就怎么写。
1,首先写一个abstract class用来overwrite HSSF。
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,
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.
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使用总结

    个人整理的POI解析EXCEL常用API详解 里面包括我在使用过程中的一些心得

    poi使用说明

    POI_3.8_API.CHM; POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf; poi-bin-3.9-20121203.zip; poi使用总结.txt; POI整理.doc;

    poi读写excel+poi总结

    在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了HSSF(Horrible Spreadsheet Format)用于读写旧版的.xls格式的Excel文件,而XSSF则用于处理.xlsx格式的...

    apache poi export

    4. **poi使用总结.txt**:这是作者使用Apache POI的一些心得体会,可能包含了他们在实际开发中遇到的问题和解决方案。对于正在使用或计划使用POI的人来说,这是一种宝贵的经验分享。 5. **poi pom编写.txt**:在...

    java poi技巧总结

    Java POI 技巧总结 Java POI 是一个流行的库,允许开发者在Java应用程序中创建、修改和读取Microsoft Office格式的文件,如Excel(.xlsx 和 .xls)。本总结将详细探讨如何利用POI库进行Excel文件的操作,包括创建...

    POI使用方法表

    ### POI使用方法详解 #### 一、简介 Apache POI是Java API中用于处理Microsoft Office格式文件(如Excel和Word)的一个强大的工具包。它提供了读取、创建和修改这些文件的功能,而无需安装Office软件。本篇文档将...

    poi操作总结 内附详细流程及poi-3.6.jar

    在本文中,我们将深入探讨如何使用Apache POI(POI-3.6.jar版本)来实现Excel的导入和导出功能。这是一项关键技能,尤其是在数据处理和报告生成的场景中。 **1. POI基础** Apache POI提供了HSSF和XSSF两个API,...

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

    总结,Apache POI提供了一套完整的API,使得在Java中操作Excel文件变得简单。通过循环读取数据和应用模板,我们可以快速生成大量定制化的Excel报告。在"poiDemo2"这个示例中,你可以找到具体实现这些步骤的代码,...

    POI操作Excel常用方法总结

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

    POI3.8架构总结.docx

    下面通过一个示例来展示如何使用 POI 创建 Excel 文档。 ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel....

    Java使用poi-tl生成word文档

    Java使用Apache POI-TL库生成Word文档是一个...总结起来,Apache POI-TL是Java开发中生成Word文档的强大工具,它结合了Apache POI的底层操作能力和基于模板的生成方式,使得开发者能方便快捷地创建专业级别的Word文档。

    使用poi方式导出excel(分多个sheet导出)

    本教程将详细介绍如何利用Apache POI库来实现使用多个Sheet(工作簿)导出一个Excel文件的功能。 一、Apache POI简介 Apache POI 是一个开源项目,提供API来读取、写入和修改Microsoft Office文件格式,如Word(DOC...

    poi 生成pdf等

    "poi 生成pdf等" 这个标题指的是使用Apache POI库来创建PDF和其他格式的文档。Apache POI是一个流行的开源Java API,主要用于读取和写入Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)等...

    poi-3.10.1上传组件jar包 po poi-ooxml poi-ooxml-schemas

    总结来说,Apache POI 3.10.1版本的上传组件为Java开发者提供了一套强大的工具,用于处理和操作Microsoft Office的文件格式,涵盖了Excel、Word和PowerPoint的多种功能,大大提升了开发效率并扩展了应用的可能性。

    poi-3.9、poi-ooxml-3.9、poi-ooxml-schemas-3.9

    总结来说,Apache POI 是Java开发中处理Excel文件的强大工具,它提供了全面的API来操作Excel的各种特性。结合 poi-3.9.jar、poi-ooxml-3.9.jar 和 poi-ooxml-schemas-3.9.jar 这三个库,开发者可以构建出功能丰富的...

    POI操作Excel常用方法总结.docx

    本文主要总结了使用POI操作Excel的一些核心概念和常见方法。 首先,了解POI的基本概念: 1. **POI简介**:Apache POI是一个开源项目,其提供的API使得Java程序能够处理MS Office格式的文档,包括Excel(XLS和XLSX...

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

    总结起来,"使用poi从数据库导出excel表的示例"是一个结合了Struts1 MVC框架和Apache POI库的Java编程任务,它涉及数据库连接、SQL查询、Excel文件生成以及Web应用响应。这个过程不仅有助于数据的高效管理和分享,也...

    使用POI操作word

    总结,Apache POI是一个强大的工具,它允许开发者用Java编程语言无缝地操作Word和Excel文档。通过理解其API和类结构,可以实现复杂的文档处理需求,如自动化报告生成、数据导入导出等。在实际应用中,应根据需求选择...

    POI-TL合并多个Word文档

    总结起来,"POI-TL合并多个Word文档"涉及到的关键技术有Apache POI的XWPF组件用于读写.docx文件,以及POI-TL库提供的模板处理功能,使得在Java程序中高效地合并和生成Word文档成为可能。这在处理批量报告、合同生成...

    Java 使用poi导入excel 并使用xml做数据验证

    总结来说,这个项目展示了如何利用Java的Apache POI库读取Excel数据,结合XML解析进行数据验证,最后将验证通过的数据导入到数据库。这个过程涉及到文件I/O、XML处理、数据验证、数据库操作等多个核心Java技术,对于...

Global site tag (gtag.js) - Google Analytics