您的位置:首页 > Web前端 > CSS

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel java poi 样式