POI生成Excel常见的几种样式的设置
2015-09-12 16:22
645 查看
POI生成Excel常见的几种样式的设置
在之前写的“第一个Excel”例子生成的Excel样式非常难看,本文将做一个比较常见的样式设置的例子。本文涉及的样式主要有如下几种:
1、设置列的宽度。
2、设置行高。
3、水平文本居中。
4、设置字体加粗、大小、种类。
5、设置cell边框。
6、设置cell背景色。
7、自定义颜色。
8、设置输出数据为String(有的数字以0开头,不定义String,开头的0都会自动剔除)。
9、自动换行(数据过长,自动换行)。
最终显现的样子如下:
本文沿用FirstExcel进行完善。闲话少说,附上代码:
import java.io.FileOutputStream; 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.HSSFPalette; 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.usermodel.CellStyle; import org.apache.poi.ss.util.CellRangeAddress; /** * 本节旨在粗浅应用单元格样式的设置 * 设置列的宽度 * 设置行高 * text水平文本居中 * 设置字体加粗、大小、种类 * 设置cell边框 * 设置cell背景色 * 自定义颜色 * 设置输出数据为String(有的数字以0开头,不定义String,开头的0都会自动剔除) * 自动换行(数据过长,自动换行) * @author longdage * */ public class StyleExcel { /** * 最基本的poi代码 * @author longdage * @category firstExcel * @exception fileNotFindException * */ public void firstExcel(){ //创建Excel工作簿:wk HSSFWorkbook wk = new HSSFWorkbook(); //工作簿里创建一页:sheet HSSFSheet sheet = wk.createSheet("My first Excel"); /************************************************/ /* 设置列的宽度 */ /* setColumnWidth: @param1:列的索引 */ /* @param2:列的宽度 */ /************************************************/ sheet.setColumnWidth(0,4000);// 设置列宽 sheet.setColumnWidth(1,4000); /************************************************/ /* 设置标题样式 */ /* 设置字体样式 */ /************************************************/ HSSFCellStyle titleStyle = wk.createCellStyle(); titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 /************************************************/ /* 自定义颜色 */ /************************************************/ String str = "#4ACAC0"; int[] color = new int[3]; color[0]=Integer.parseInt(str.substring(1, 3), 16); color[1]=Integer.parseInt(str.substring(3, 5), 16); color[2]=Integer.parseInt(str.substring(5, 7), 16); HSSFPalette palette = wk.getCustomPalette(); palette.setColorAtIndex(HSSFColor.BLACK.index,(byte)color[0],(byte)color[1],(byte)color[2]); HSSFFont titleFont = wk.createFont(); titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//字体加粗 titleFont.setFontName("宋体");//字体类型 titleFont.setFontHeightInPoints((short)16);//一般标题大小16 titleStyle.setFillForegroundColor(HSSFColor.BLACK.index); titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); titleStyle.setFont(titleFont); //标题:titleRow sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));//合并第0行第0列到第0行的第一列 HSSFRow titleRow = sheet.createRow(0);//第一行设置为标题 HSSFCell titleCell = titleRow.createCell(0);//创建一个单元格 titleCell.setCellValue("Title");//取名 /*--------------------样式设置进Excel中-------------------*/ titleCell.setCellStyle(titleStyle); /************************************************/ /* 设置行的高度 */ /************************************************/ titleRow.setHeightInPoints((float) (20)); //header HSSFRow headerRow = sheet.createRow(1);//第二行设置为头部 HSSFCell headerCell0 = headerRow.createCell(0);//创建第一个头部单元格 HSSFCell headerCell1 = headerRow.createCell(1);//创建第二个头部单元格 headerCell0.setCellValue("第一个header"); headerCell1.setCellValue("第二个header1111111111111"); //设置长度,实验换行 HSSFCellStyle headerStyle = wk.createCellStyle(); headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中 HSSFFont headerFont = wk.createFont(); headerFont.setFontName("宋体");//字体类型 headerFont.setFontHeightInPoints((short)11);//一般表头字体大小11 headerStyle.setFont(headerFont); //自动换行 headerStyle.setWrapText(true); headerCell0.setCellStyle(headerStyle); headerCell1.setCellStyle(headerStyle); //正文 HSSFRow row = sheet.createRow(2);//创建一个正文行 HSSFCell cell0 = row.createCell(0);//正文对应header下的一个单元格 HSSFCell cell1 = row.createCell(1);//正文“第二个header”下对应的单元格 HSSFCellStyle cellStyle = wk.createCellStyle(); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 HSSFFont cellFont = wk.createFont(); cellFont.setColor((short) 1); cellFont.setFontName("宋体");//字体类型 cellFont.setFontHeightInPoints((short)8);//一般表头字体大小11 cellStyle.setBorderBottom(CellStyle.BORDER_THIN);//黑色边框 cellStyle.setBorderLeft(CellStyle.BORDER_THIN); cellStyle.setBorderRight(CellStyle.BORDER_THIN); cellStyle.setBorderTop(CellStyle.BORDER_THIN); cell0.setCellStyle(cellStyle); cell0.setCellValue(001); /************************************************/ /* 设置背景色 */ /************************************************/ HSSFCellStyle cellColor = wk.createCellStyle(); cellColor.setFillForegroundColor(HSSFColor.PINK.index); cellColor.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//充满 /************************************************/ /* 设置cell数据类型 */ /* 如果不设置类型,cell0所示,最终结果为“1” */ /* 如果设置String类型,cell1所示,最终结果为“001” */ /************************************************/ HSSFDataFormat format = wk.createDataFormat(); cellColor.setDataFormat(format.getFormat("@")); //没有它,数字以0开头,双击该数据,0就会消失 cell1.setCellType(HSSFCell.CELL_TYPE_STRING); cell1.setCellValue("001"); cell1.setCellStyle(cellColor); //生成Excel try { FileOutputStream fileOut = new FileOutputStream( "E:\\studyInPrimb\\POI_Study\\StyleExcel.xls"); wk.write(fileOut); fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } /** * main函数测试 * @author longdage * @param args * */ public static void main(String[] args) { new StyleExcel().firstExcel(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 使用Python生成Excel格式的图片
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树