Java处理Excel全解一

在获取客户需求的时候,常常会出现"客户要求处理他们提供的Excel文件"。针对Excel文件的处理,比较完美的解决方案就是使用poi来进行处理。poi是Apache的Jakata项目的POI项目,目前来看还是比较成熟的HSSF接口,处理MSExcel对象。既然是处理Excel文件,那么先来了解下Excel的组成:[b][color=red]一个Excel 文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成[/color]。[/b]在了解了Excel的组成后,接着来了解下POI对应的用于处理Excel的一些对象。
[quote]
HSSFWorkbook excel的文档对象
HSSFSheet excel的表单
HSSFRow excel的行
HSSFCell excel的格子单元
HSSFFont excel的字体
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾(只有打印的时候才能看见效果)
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
[/quote]
如果想要了解更多请到apache(www.apache.org)下载poi.jar.同时多看看API文档。
下面给出一个简单的example。

建立一个空的xls文件

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class createExcel {
public static void main(String[] args) throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
workbook.write(fileOut);
fileOut.close();
}
}

下面的是建立一个excel,并且写入一些值

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;


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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class CreateCells {

public static void main(String args[]) throws IOException{
HSSFWorkbook workbook = new HSSFWorkbook(); //建立新的HSSFWorkbook对象
HSSFSheet sheet =workbook.createSheet("new sheet"); //建立新的sheet对象
HSSFRow row = sheet.createRow((short)0);
//在sheet里创建一行,参数为行号(第一行,此处可想象成数组)
HSSFCell cell = row.createCell((short)0);
//在row里建立新cell(单元格),参数为列号

cell.setCellValue(1);//设置cell的整数类型的值
row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值
row.createCell((short)2).setCellValue("test");//设置cell字符类型的值
row.createCell((short)3).setCellValue(true);// 设置cell布尔类型的值

HSSFCellStyle cellStyle = workbook.createCellStyle();//建立新的cell样式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); //设置cell样式为定制的日期格式
HSSFCell dCell = row.createCell((short)4);
dCell.setCellValue(new Date()); //设置cell为日期类型的值
dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式
HSSFCell csCell = row.createCell((short)5);
csCell.setCellValue("中文测试_chinese Words Test");
FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
workbook.write(fileOut);
fileOut.close();
System.out.println("-------------------");
}
}

上面的方法比较标准化,但是显得有点繁琐,现在用一个方法来除去繁琐。这个方法不需要事先创建row和cell,直接进行cteateCell就可以了,在程序中会自动进行判断,如果不存在的话会创建。

/**
* @param workbook 文档对象
* @param row 行
* @param col cell单元格的位置也就是列号
* @param align 对齐的方式
* @param val 单元格里面的值
*/
private static void createCell(HSSFWorkbook workbook,HSSFRow row,short col,short align,String val){
HSSFCell cell = row.createCell(col);
cell.setCellValue(val);
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(align);
cell.setCellStyle(cellStyle);
}

看看怎么去调用该createCell方法

HSSFRow row = sheet.createRow((short)1);
createCell(workbook,row,(short)0,HSSFCellStyle.ALIGN_CENTER_SELECTION,"TEXTID");

同时要设置一个单元格里面的信息的格式(比如居中)设置如下

HSSFCellStyle cellstyle = workbook.createCellStyle();
cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
cell.setCellStyle(cellstyle);

如果要合并单元格,则操作如下

sheet.addMergedRegion(new Region(1,(short)1,2,(short)4));

这篇先到这里!附件中有poi-3.2.jar包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值