http://www.iteye.com/topic/211707
主题:POI 使用总结
之前用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;
-
-
-
-
-
-
- public
abstract
class
ExportInfoToExcel
- {
-
-
-
- protected
abstract
void
createHead();
-
-
-
-
-
-
- protected
abstract
void
createBody(String[] columns, ArrayList itemlist);
-
-
-
-
- protected
abstract
void
createFoot();
-
-
-
-
- public
void
createCell(HSSFCellStyle cellStyle, HSSFCell cell, String value)
- {
- cell.setEncoding(HSSFCell.ENCODING_UTF_16);
- cell.setCellStyle(cellStyle);
- cell.setCellValue(value);
- }
- }
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;
-
-
-
-
-
-
- public
interface
ExportInfoInterface
- {
-
- public
void
setDate(Calendar startDate);
- public
void
setColumns(String[] columns);
-
- public
void
setDataList(ArrayList itemList);
-
- public
void
produceExportFile(File exportfile)
throws
Exception;
- public
void
setOtherArg(Object arg1);
- }
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;
-
-
-
-
-
-
- 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 ()
- {
-
- }
-
- @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;
- }
-
- }
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常用方法总结”可能详细介绍了如何利用Apache POI库在Java环境中读写Excel文件。以下是对该主题的一些关键知识点的详细说明: 1. **Apache POI介绍**: Apache POI是开源项目,提供了...
1. 创建新Workbook:使用`WorkbookFactory.create()`方法,可以创建一个新的空Workbook对象,或者通过`Workbook.createSheet()`创建新的Sheet。 2. 添加Row和Cell:在Sheet对象上,我们可以调用`createRow()`和`...
总结,Java POI为开发者提供了一种方便的方式来自动化处理PowerPoint文件,无论是创建全新的演示文稿,还是编辑已有的PPT文件,都能灵活应对。通过阅读和实践提供的示例代码,你将能够更好地掌握这一技能。
总结来说,Poi-SoundBoard项目展示了Java在Android应用开发中的广泛运用,包括音频资源的管理、用户交互的实现、界面设计和性能优化等多个方面。通过这个项目,开发者可以深入理解Android开发的核心技术,并以此为...
总结来说,Apache POI是一个强大的Java库,用于处理Microsoft Office格式的文件,特别是Excel和Word。通过使用POI,开发者可以轻松地在Java应用程序中实现对这些文件的读写操作,且无需依赖于Microsoft Office软件...
这个标题揭示了我们所讨论的主题是关于百度地图的POI(Point of Interest)数据,具体聚焦于北京市的区域。POI数据是地图服务中的一个重要组成部分,它包含了地图上的兴趣点信息,如餐馆、酒店、公园、商业设施等...
本主题聚焦于如何利用Apache POI库将Word文档(.doc)转换为HTML格式,以便实现在线阅读。Apache POI是Java领域的一个强大工具,它支持Microsoft Office的文件格式读写,包括Word、Excel和PowerPoint等。 首先,让...
**总结**:以上内容详细介绍了如何使用 Apache POI 在 Java 程序中创建和操作 Excel 文件。从创建 Excel 文件到设置单元格的内容,再到添加文档的摘要信息和批注,这些操作都是日常开发中非常实用且常见的功能。掌握...
2. **读取Excel文件**:使用NPOI打开并读取Excel文件,遍历工作表中的每一行数据,获取POI的名称、坐标和地市信息。 ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 加载Excel文件 var file =...
在“好用的poi包无冲突可转html可操作书签3.9docx”这个主题中,我们主要关注的是如何使用Apache POI库在Java环境中操作DOCX文档,并将其转换为HTML格式,同时还能处理文档中的书签。 1. Apache POI简介: Apache ...
"POI和ASPOSE文件转换在线预览"这个主题涉及到两个关键的Java库:Apache POI和Aspose,它们都是用于处理Microsoft Office文件的强大工具。本文将深入探讨这两个库的功能、用法以及如何利用它们实现文件格式转换并...
本主题聚焦于"基于SSM框架的POI导入导出",这是一项在业务系统中常用的技术,用于处理大量数据的导入与导出,如Excel表格。 首先,我们需要理解SSM框架的构成: 1. **Spring**:Spring是核心容器,提供依赖注入...
在"poi解析导入word (简单Demo使用)"这个主题中,我们将深入探讨如何使用Apache POI库来读取、修改和创建Word文档。这个项目包含了一个POM文件(项目对象模型),一个Demo示例,以及一个docx文件,提供了完整的导入...
在“ poi导出,导出excel文件 ”这个主题中,我们将主要关注XSSF,因为它是现代Excel文件的标准。导出Excel文件的基本步骤如下: 1. **添加依赖**:首先,你需要在你的项目中引入Apache POI的依赖。如果你使用Maven...
描述中的“【全国重点城市POI数据】-武汉数据-体育休闲服务”进一步明确了数据集的主题,即这是一份关于武汉地区的体育休闲设施的Point of Interest (POI) 数据。POI数据是指地图上的兴趣点,通常包括地点的名称、...
在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...
在这个“poi 下拉列表”主题中,我们将深入探讨如何利用Apache POI创建Excel文件中的下拉列表,以及如何在实际应用中使用这些下拉列表。 首先,下拉列表在Excel中被称为数据验证(Data Validation),它们提供了一...
本文将深入探讨“get wc_高德poi爬取矩形选取面积”这一主题,旨在帮助你理解和实现从高德地图API获取特定区域内指定类型的点兴趣(POI)信息。 首先,"高德 poi 爬取矩形选取面积"指的是利用高德地图的开放API,...
本文将深入探讨“百度地图Poi搜索功能(含自动检索附近地址)”,这一主题涉及到Android平台上的百度地图SDK,以及如何实现Poi(Point of Interest,兴趣点)搜索和自动定位功能。 首先,我们要了解的是**Android...