`
康敏栋
  • 浏览: 171743 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

POI HSSF 操作MS Excel简述

阅读更多
文章转自http://java.mblogger.cn/elune/posts/15242.aspx

POI HSSF是一个专门操作EXCEL的java包,可通过纯java操作xls文件。
POI HSSF的类文件都放在在org.apache.poi.hssf包下,通过此包中的类就可实现用java操作Excel文件了。
下面是用POI HSSF操作Excel文件的方法简述:

一, 建立Excel工作薄
HSSFWorkbook wb = new HSSFWorkbook();

二, 建立Excel工作表,每个工作表对应的是Excel界面左下角的一个标签sheet1,sheet2 …
HSSFSheet sheet1 = wb.createSheet("new sheet");

三, 在工作表中建立单元格
//首先,建立行对像,行号作为参数传给createRow方法,第一行由0开始计算。
HSSFRow row = sheet.createRow((short)0);

//建单元格
HSSFCell cell = row.createCell((short)0);

//给单元格赋值
cell.setCellValue(1);

//也可同一行内完成建立单元格和赋值
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string");
row.createCell((short)3).setCellValue(true);

//数据格式可通过创建单元格值时默认如上面所视
//也可以创建单元格后调用setCellType指定
cell.setCellType(CELL_TYPE_NUMERIC);

四, 向单元格插入日期值
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

// 可通过Sheet.setSheetName(sheetindex,"SheetName",encoding)设定工作表名

// 创建新行并向其加入单元格,行号由0开始。
HSSFRow row = sheet.createRow((short)0);

// 创建一个单元格并向其输入一日期值,但这第一个单元格并非是日期格式。
HSSFCell cell = row.createCell((short)0);
cell.setCellValue(new Date());

// 我们将这第二个单元格改成日期格式,这需要从工作薄创建一个新的单元格格式,这可// 以只影响当前建立的一个单元格。
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell = row.createCell((short)1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);

五, 各种单元格样式
HSSFCellStyle cellStyle = wb.createCellStyle();
//对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//带边框
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//颜色与填充样式
cellStyle.setFillBackgroundColor(HSSFColor.AQUA.index);
cellStyle.setFillPattern(HSSFCellStyle.BIG_SPOTS);
cellStyle.setFillForegroundColor(HSSFColor.ORANGE.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

六, 行高,列宽。
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short)0);

//2是行高值
row.setRowHeight(2);

//3是列号,4是列宽值
sheet.setColumnWidth(3, 4);


七,例程

首先调用一个方法将Oracle数据库中的数据取出,放到List实例中,这里我调用了srrd项目中ProductData类的listProductQuery()取得一个List实例。List中的对象是一系列名为ProductQuery实体类的实例。然后读List,将ProductQuery实例中的数据取出放到HSSFCell单元格中。最后将HSSFWorkbook中的数据输出到输出流,完成数据导出。
//建工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//建名为example的工作表
HSSFSheet sheet = wb.createSheet("example");
//给工作表前8列定义列宽
sheet.setColumnWidth((short)0,(short)2500);
sheet.setColumnWidth((short)1,(short)6000);
sheet.setColumnWidth((short)2,(short)3500);
sheet.setColumnWidth((short)3,(short)9000);
sheet.setColumnWidth((short)4,(short)8000);
sheet.setColumnWidth((short)5,(short)8000);
sheet.setColumnWidth((short)6,(short)20000);
sheet.setColumnWidth((short)7,(short)8000);
//在表中建行
HSSFRow row = sheet.createRow(0);
//建立单元格 
HSSFCell cell[] = new HSSFCell[8];
for (short i = 0; i < 8; i++) {
cell[i] = row.createCell(i);
//将单元格定义成UTF_16编码,这样才能使输出数据不会乱码
cell[i].setEncoding(HSSFCell.ENCODING_UTF_16);
}
//写单元格标题
cell[0].setCellValue("登记ID");
cell[1].setCellValue("登记号");
cell[2].setCellValue("所在地市ID");
cell[3].setCellValue("产品中文名");
cell[4].setCellValue("产品英文名");
cell[5].setCellValue("产品服务对象");
cell[6].setCellValue("产品功能描述");
cell[7].setCellValue("产品类别");
//查询数据库,取得数据列表的List实例
List list = new ArrayList();
ProductDataManager mgr = new ProductDataManager();
try {
list = mgr.listProductQuery("","", "", "", "", "1999-2-1", "2004-2-1");
} catch (SrrdException e) {
e.printStackTrace(); 
}
//从List中取出数据放入工作表中
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size() - 1; i++) {
ProductQuery query = (ProductQuery) list.get(i);
HSSFRow datarow = sheet.createRow(i + 1);
HSSFCell data[] = new HSSFCell[8];
for (short j = 0; j < 8; j++) {
data[j] = datarow.createCell(j);
//将单元格定义成UTF_16编码,这样才能使输出数据不会乱码
data[j].setEncoding(HSSFCell.ENCODING_UTF_16);
}
data[0].setCellValue(query.getCertId());
data[1].setCellValue(query.getCertNum());
data[2].setCellValue(query.getCityCode());
data[3].setCellValue(query.getSoftWareCname());
data[4].setCellValue(query.getSoftWareEname());
data[5].setCellValue(query.getSoftwareFor());
data[6].setCellValue(query.getSoftwareFuncDesc());
data[7].setCellValue(query.getSoftwareType());
}
}
//将工作薄输出到输出流
ServletOutputStream sos=response.getOutputStream();
wb.write(sos);
sos.close();

//也可输出成xls文件
File file = new File("workbook.xls");
try {
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
} catch (IOException e) {
e.printStackTrace(); 
}
分享到:
评论

相关推荐

    POI HSSF - Excel实例

    从标签"源码"来看,这个压缩包可能包含了示例代码,帮助开发者理解如何使用POI HSSF来操作Excel文件。"工具"标签可能意味着这些代码片段或类是实用的,可以作为开发过程中的辅助工具。 在给定的文件名称列表中: 1....

    Apache POI HSSF和XSSF读写EXCEL总结

    Apache POI HSSF和XSSF读写EXCEL总结

    Apache POI HSSF读写Excel

    以下是对使用Apache POI HSSF进行Excel读写操作的详细知识点: 1. **HSSF模型**:Apache POI使用了一种类似于Excel内部结构的模型来表示工作簿、工作表、行、单元格等元素。HSSFWorkbook代表一个工作簿,HSSFSheet...

    Apache 1. POI HSSF和XSSF读写EXCEL总结.pdf

    。Apache 1.。POI HSSF和XSSF读写EXCEL总结.pdf

    Apache 1. POI HSSF和XSSF读写EXCEL总结.docx

    。Apache 1.。POI HSSF和XSSF读写EXCEL总结.docx

    POI3.5 HSSF 和XSSF Excel操作快速入门手册.pdf

    ### POI3.5 HSSF 和XSSF Excel操作快速入门手册 #### 一、简介 Apache POI 是一个用于读写Microsoft Office格式文件的Java API,包括但不限于Excel、Word等。其中,HSSF用于处理Excel 97-2003格式(.xls),而XSSF则...

    poi excel poi excel poi excel

    HSSF 提供了一系列的类来操作 Excel 文件: - **HSSFWorkbook**:表示整个工作簿,即一个 Excel 文件。 - **HSSFSheet**:表示工作簿中的一个工作表。 - **HSSFRow**:表示工作表中的一行。 - **HSSFCell**:表示...

    用POI的HSSF来控制EXCEL的研究

    本文将详细介绍如何使用Apache POI的HSSF API来控制Excel文件的各种操作,包括创建工作簿、创建和管理表格、设置单元格数据和样式等。 #### 二、创建工作簿(Workbook) 在使用Apache POI创建Excel文件之前,首先...

    org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException

    解决POI读取EXCEL时报org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException异常

    org.apache.poi.hssf.converter,office转html所需包

    `org.apache.poi.hssf.converter` 是Apache POI的一个子模块,它专注于处理老版本的Excel文件(.xls),也就是基于HSSF(Horizontally Stored Spreadsheet Format)的文件。 在这个标题为“org.apache.poi.hssf....

    POI生成Excel POI操作Excel POI读取Excel POI类库

    在这个场景中,我们关注的是如何使用POI来创建、读取和操作Excel文档。在Web项目中,这种功能通常用于数据导入导出,报表生成,或者任何需要与用户交换表格数据的场景。 **POI生成Excel** 生成Excel文件主要涉及...

    POI教程 JAVA操作EXCEL教程

    Apache POI提供了HSSF接口,用于处理MS Excel的对象。HSSF代表Horrible Spreadsheet Format,是一个纯Java实现的Excel解决方案。它可以创建、修改、读取Excel文件,并允许对工作簿(Workbook)、工作表(Sheet)、行...

    应用POI组件操作Excel

    ### 应用POI组件操作Excel #### 一、POI组件简介 POI组件作为Apache项目的开源子项目之一,其主要目标在于提供一套API,使得开发者能够利用Java语言来读取与写入Microsoft Office文件格式的数据。尤其针对Excel...

    poi log4j excel poi log4j excel poi log4j excel

    poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel poi log4j excel

    POI3.5_HSSF_和XSSF_Excel操作快速入门手册

    Apache POI项目提供了HSSF和XSSF两个模块,分别用于操作旧版的Excel文件(.xls)和新版的Excel文件(.xlsx)。HSSF代表Horrible Spreadsheet Format,是针对Excel 97-2003文件格式的实现;而XSSF代表XML Spreadsheet...

    poi3.0.1操作excel

    在本案例中,我们将重点关注"poi3.0.1"版本如何操作Excel文件。这个版本的POI库提供了Java程序员处理Excel文档的强大功能,可以进行创建、读取、更新和删除等操作。 首先,我们需要理解Apache POI的工作原理。它...

    POI HSSF 3.2

    其中,HSSF(Horizontally Split Formatted)是POI库的一个子项目,主要负责处理老版本的Excel文件,即.BIFF8格式的Excel 97-2007文件。在本文中,我们将深入探讨POI HSSF 3.2版本中的核心概念和操作API。 首先,`...

    poi操作Excel,HSSF,XSSF两种方式(.xls与.xlsx)导入导出

    使用HSSF,你可以创建新的工作簿,添加工作表,插入数据,设置单元格样式,以及执行其他与Excel相关的操作。以下是一个简单的HSSF示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org....

    利用POI合并多个Excel表

    POI提供了HSSF(Horrible Spreadsheet Format)用于处理.xls文件(Excel 97-2003格式),而XSSF用于处理.xlsx文件(Excel 2007及以上版本)。在这个场景下,我们可能需要用到XSSFWorkbook类来处理.xlsx格式的Excel...

Global site tag (gtag.js) - Google Analytics