Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

POI-HSSF小结

$
0
0
一、概述
    1. Apache POI是Apache软件基金会的开放源码函式库,POI提供API给java程式对Microsoft Office格式档案读和写的功能.
    2. 结构
        HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
        XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
        HWPF - 提供读写Microsoft Word DOC格式档案的功能。
        HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
        HDGF - 提供读Microsoft Visio格式档案的功能。
        HPBF - 提供读Microsoft Publisher格式档案的功能。
        HSMF - 提供读Microsoft Outlook格式档案的功能
    
二、HSSF代码示例
    1.excel结构
        HSSFWorkbook     excel文档对象介绍
        HSSFSheet         excel的表单
        HSSFRow         excel的行
        HSSFCell         excel的格子单元
        HSSFFont         excel字体
        HSSFName         名称
        HSSFDataFormat     日期格式
        poi1.7中增加以下2项:
        HSSFHeader         sheet头
        HSSFFooter         sheet尾
        HSSFCellStyle    cell样式
        辅助操作包括
        HSSFDateUtil         日期
        HSSFPrintSetup         打印
        HSSFErrorConstants    错误信息表

    2.代码示例:

	//导包:commons-logging..jar、log4j...jar、poi-..jar
	import java.io.FileOutputStream;
	import java.util.Calendar;
	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.HSSFFont;
	import org.apache.poi.hssf.usermodel.HSSFRichTextString;
	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;
	public class test {
		public static void main(String[] args) throws Exception {
			//创建,存在内存中
			HSSFWorkbook wb = new HSSFWorkbook();
			HSSFSheet sheet = wb.createSheet("first sheet中文");
			wb.createSheet("second sheet");
			
			//创建行,并存放各种类型数据
			HSSFRow row = sheet.createRow(0);
			HSSFCell cell = row.createCell(0);
			cell.setCellValue(false);
			row.createCell(1).setCellValue(Calendar.getInstance());
			row.createCell(2).setCellValue(new Date());
			row.createCell(3).setCellValue(1234567.987654f);
			String desc = "asdfsadfdsafdfasfasdf";
			row.createCell(4).setCellValue(new HSSFRichTextString(desc));
			
			//格式化数据
			HSSFDataFormat format = wb.createDataFormat();//创建格式对象
			HSSFCellStyle style = wb.createCellStyle();//创建样式对象
			
			//设置格式
			style.setDataFormat(format.getFormat("yyyy-MM-dd hh:mm:ss"));
			cell = row.getCell(1);
			cell.setCellStyle(style);//对cell应用样式
			row.getCell(2).setCellStyle(style);
			
			//设置列宽
			sheet.setColumnWidth(1, 5000);//单位:点的1/20
			sheet.autoSizeColumn(2);
			
			//格式化数字
			style = wb.createCellStyle();
			style.setDataFormat(format.getFormat("#,###.###"));//保留3位小数
			row.getCell(3).setCellStyle(style);
			
			//文本自动换行
			sheet.setColumnWidth(4, 3000);
			style = wb.createCellStyle();
			style.setWrapText(true);//回绕文本(wrap:缠绕)
			row.getCell(4).setCellStyle(style);
			
			//设置文本对齐方式
			sheet.setColumnWidth(0, 5000);
			row = sheet.createRow(1);
			row.createCell(0).setCellValue("left top");
			row.createCell(1).setCellValue("center center");
			row.createCell(2).setCellValue("right bottom");
			
			//对齐方式-->左上
			style = wb.createCellStyle();
			style.setAlignment(HSSFCellStyle.ALIGN_LEFT);//(alignment:队列 ;align:排列)
			style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
			row.getCell(0).setCellStyle(style);
			//对齐方式-->中中
			style = wb.createCellStyle();
			style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
			style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
			row.getCell(1).setCellStyle(style);
			//对齐方式-->右下
			style = wb.createCellStyle();
			style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
			style.setVerticalAlignment(HSSFCellStyle.VERTICAL_BOTTOM);
			row.getCell(2).setCellStyle(style);
			
			//设置行高
			row.setHeightInPoints(50);
			//设置字体
			style = row.getCell(1).getCellStyle();
			HSSFFont font = wb.createFont();
			font.setFontName("宋体");
			font.setFontHeightInPoints((short) 13);
			font.setColor(HSSFColor.RED.index);
			style.setFont(font);
			
			//文本旋转(正数为逆时针,负数为顺时针)
			style.setRotation((short) -30);
			
			//设置边框
			row = sheet.createRow(2);
			cell = row.createCell(0);
			style = wb.createCellStyle();
			style.setBorderBottom(HSSFCellStyle.BORDER_DASH_DOT_DOT);//(dash:破折号)
			style.setBottomBorderColor(HSSFColor.BLUE.index);
			cell.setCellStyle(style);
			
			//计算列(运用函数)
			row = sheet.createRow(3);
			row.createCell(0).setCellValue(2);
			row.createCell(1).setCellValue(5.1);
			row.createCell(2).setCellValue(3.9);
			row.createCell(3).setCellFormula("sum(A4:C4)");
			
			//整体移动行(1:开始行;3:结束行;2:向下移动多少行,负数则为上移)
			sheet.shiftRows(1, 3, 2);
			
			/*拆分窗格
			 * 1000:左侧窗格的宽度
			 * 2000:上侧窗格的高度
			 * 3:右侧窗格开始显示的列的索引
			 * 4:下侧窗格开始显示的行的索引
			 * 1:激活哪个面板区
			 */
			sheet.createSplitPane(1000, 2000, 3, 4, 1);
			
			//冻结窗口
			//1:冻结前几列; 2:冻结前几行
			sheet.createFreezePane(1, 2, 3, 4);
			
			//从内存写出到e:/testPOI.xls,不存在就创建
			wb.write(new FileOutputStream("e:/testPOI.xls"));
		}
	}


作者:wyply115 发表于2012-12-29 21:54:58 原文链接
阅读:33 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>