`
jiangduxi
  • 浏览: 443816 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java处理Excel全解一

阅读更多
在获取客户需求的时候,常常会出现"客户要求处理他们提供的Excel文件"。针对Excel文件的处理,比较完美的解决方案就是使用poi来进行处理。poi是Apache的Jakata项目的POI项目,目前来看还是比较成熟的HSSF接口,处理MSExcel对象。既然是处理Excel文件,那么先来了解下Excel的组成:一个Excel 文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成在了解了Excel的组成后,接着来了解下POI对应的用于处理Excel的一些对象。
引用

HSSFWorkbook          excel的文档对象
HSSFSheet             excel的表单
HSSFRow               excel的行
HSSFCell              excel的格子单元
HSSFFont              excel的字体
HSSFDataFormat        日期格式
HSSFHeader            sheet头
HSSFFooter            sheet尾(只有打印的时候才能看见效果)
HSSFCellStyle         cell样式
HSSFDateUtil          日期
HSSFPrintSetup        打印
HSSFErrorConstants    错误信息表

如果想要了解更多请到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包
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics