很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。
Java Aspose Cells
Java Aspose Cells 是一种纯粹的Java授权的Excel API,开发和供应商Aspose发布。这个API的最新版本是8.1.2,发布于2014年7月,是一个丰富而厚重的API(普通Java类和AWT类的组合)设计,可以读、写和操纵电子表格Excel的组件。此API常见用途如下:
Excel报表,建立动态Excel报表
高保真的Excel渲染和打印
从Excel电子表格中导入和导出数据
生成,编辑,转换和电子表格
JXL
JXL是一款专为Selenium第三方框架,支持基于Web浏览器(数据是Web浏览器自动更新)数据驱动的自动化。然而,它也被用来作为JExcel API的一个共同的支持库,因为它的基本功能是可创建,读取和写入电子表格。基本特征如下:
生成Excel文件
从工作簿和电子表格导入数据
获得行和列的总数
注意:JXL只支持xls档案格式,并且不能处理大数据量。
JExcel
JExcel是由Team Dev开发提供纯行货API。利用这一点程序员可以很容易地读取,写入,显示和修改Excel工作簿中的两种格式:.xls和.XLSX。这个API可以很容易地嵌入Java的Swing和AWT。这个API的最新版本是Jexcel-2.6.12,发布于2009年,主要特点如下。
自动化Excel应用程序,工作簿,工作表等
在Java Swing应用程序作为普通的Swing组件嵌入到工作簿
事件侦听器添加到工作簿和电子表格
添加事件处理程序来处理的工作簿和电子表格事件的行为
添加本地对等开发定制功能
Apache POI
Apache POI是Apache软件基金会提供的100%开源库。大多数中小规模的应用程序开发主要依赖于Apache POI(HSSF+ XSSF)。它支持Excel 库的所有基本功能; 然而,呈现和文本提取是它的主要特点。
现在常用的解析excel的API主要有jxl和poi,本文主要研究关于poi的相关知识。
HPBF (出版商格式) : 它被用来读取和写入MS-Publisher文件。
知识体系
3、设置列宽、行高
[
sheet.setColumnWidth((short)column,(short)width);
row.setHeight((short)height);
4、保存Excel文件
FileOutputStream fileOut = new FileOutputStream(path);
wb.write(fileOut);
5、常用单元格边框格式
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
6.设置不显示excel网格线
sheet.setDisplayGridlines(false);其中sheet是Sheet对象
7.设置excel单元格中的内容换行
cellStyle.setWrapText(true);其中cellStyle是WorkBook创建的CellStyle对象,然后将cellStyle设置到要换行的Cell对象,最后在要换行的对象(一般为字符串)加入"/r/n"。如
topTile.append("/r/n" +"cellContent");
8.单元格的合并
sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例为合并4行2列
package com.company.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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;
import org.apache.poi.ss.util.CellRangeAddress;
public class MergedCells
{
public static void main(String[] args)
throws IOException
{
//创建工作簿
HSSFWorkbook wb = new HSSFWorkbook();
//创建工作表
HSSFSheet sheet = wb.createSheet("new sheet");
for(int i=0;i<3;i++){
//设置列宽
sheet.setColumnWidth(i, 3000);
}
//创建行
HSSFRow row = sheet.createRow(0);
row.setHeightInPoints(30);//设置行高
//创建单元格
HSSFCell cell = row.createCell(0);
cell.setCellValue("用户信息表");
//标题样式
// 创建单元格样式
HSSFCellStyle cellStyle = wb.createCellStyle();
// 设置单元格的背景颜色为淡蓝色
cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// 设置单元格居中对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
HSSFFont font = wb.createFont();
// 设置字体加粗
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
font.setFontHeight((short) 200);
cellStyle.setFont(font);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
//设置单元格样式
cell.setCellStyle(cellStyle);
//合并单元格
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
HSSFRow row1 = sheet.createRow(1);
//标题信息
String[] titles = {"ID","用户名","密码"};
for(int i=0;i<3;i++){
HSSFCell cell1 = row1.createCell(i);
cell1.setCellValue(titles[i]);
//设置单元格样式
cell1.setCellStyle(cellStyle);
}
//模拟数据,实际情况下String[]多为实体bean
List list = new ArrayList();
list.add(new String[]{"1","zhangsan","111"});
list.add(new String[]{"2","lisi","222"});
list.add(new String[]{"3","wangwu","333"});
///内容样式
// 创建单元格样式
HSSFCellStyle cellStyle2 = wb.createCellStyle();
// 设置单元格居中对齐
cellStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle2.setWrapText(true);
// 设置单元格字体样式
HSSFFont font2 = wb.createFont();
// 设置字体加粗
font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font2.setFontName("宋体");
font2.setFontHeight((short) 200);
cellStyle2.setFont(font2);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
//循环赋值
for(int i=0;i
本文简单介绍了poi的相关知识,并主要研究了使用poi导出excel的相关知识,关于使用poi读取excel以及使用poi操作其他office文件,比如doc的相关知识,留待以后研究。