使用POI的HSSF读取Excel中的数据

POI
Jakarta_POI使用Java读写Excel(97-2002)文件,可以满足大部分的需要。POI下面有几个自项目HSSF用来实现Excel的读写。下面展示具体操作。

Jakarta_POI 使用Java读写Excel(97-2002)文件,可以满足大部分的需要。POI下面有几个自项目HSSF用来实现Excel的读写。

目录:

创建一个workbook

创建一个sheet

创建cells

创建日期cells

设定单元格格式

说明:

以下可能需要使用到如下的类

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
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.HSSFColor;

创建workbook

// 使用默认的构造方法创建workbook
HSSFWorkbook wb = new HSSFWorkbook(); 
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);        // 指定文件名
fileOut.close();          // 输出到文件

创建一个sheet

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");           // workbook创建sheet
HSSFSheet sheet2 = wb.createSheet("second sheet");        // workbook创建另外的sheet
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

创建cells

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short)0);           // sheet 创建一行
HSSFCell cell = row.createCell((short)0);          // 行创建一个单元格
cell.setCellValue(1);                              // 设定单元格的值
row.createCell((short)1).setCellValue(1.2);        // Double、Float
row.createCell((short)2).setCellValue("This is a string");  // String
row.createCell((short)3).setCellValue(true);       // Boolean
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

创建日期cells

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short)0);
HSSFCell cell = row.createCell((short)0);
cell.setCellValue(new Date());        // 设定值为日期
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));    // 指定日期显示格式
cell = row.createCell((short)1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);         // 设定单元格日期显示格式
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

设定单元格格式

单元格格式的设定有很多形式包括单元格的对齐方式,内容的字体设置,单元格的背景色等,因为形式比较多,只举一些例子.以下的例子在POI1.5中可能会有所改变具体查看API。

HSSFCellStyle style = wb.createCellStyle();        // 创建一个样式
style.setFillBackgroundColor(HSSFCellStyle.AQUA);
style.setFillPattern(HSSFCellStyle.BIG_SPOTS);     // 设定此样式的的背景颜色填充
//样式的填充类型。有多种式样如:
//HSSFCellStyle.BIG_SPOTS
//HSSFCellStyle.FINE_DOTS
//HSSFCellStyle.SPARSE_DOTS等
style.setAlignment(HSSFCellStyle.ALIGN_CENTER );         // 居中对齐
style.setFillBackgroundColor(HSSFColor.GREEN.index);     // 设定单元个背景颜色
style.setFillForegroundColor(HSSFColor.RED.index);       // 设置单元格显示颜色
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("单元格值");
cell.setCellStyle(style);

使用poi的hssf生成一个excel文件以后,有一个主类Workbook(相当于一个excel文件)的方法Workbook.write(OutputStream)可以写到response.getOutputStream()里面。如果事先设置response的contentType为excel和下载的附件名称就可下载excel。

HSSFWorkbook book = _proxy.expertExcel(_formBean, _login);
if (book != null) {
    response.setContentType ("application/ms-excel") ;
    response.setHeader ("Content-Disposition", "attachment;filename=" + new String("导出Excel.xls".getBytes(), "iso-8859-1″)) ;               
    book.write(response.getOutputStream());
}

其中expertExcel无非是从数据库或者其他地方获取数据创建excel即可。

学习从来无捷径,循序渐进登高峰。 —— 高永祚
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号