这份笔记里主要介绍了以下的内容:
1、单元格对齐方式
2、单元格边框处理
3、单元格填充色和颜色操作
4、单元格合并
第 3 讲的示例代码是:Demo8-Demo11。
1、单元格对齐方式
/**
* 设置单元格对齐的方式
*/
@Test
public void test01(){
Workbook wb = new HSSFWorkbook();// 定义一个新的工作簿
Sheet sheet = wb.createSheet("三年级(2)班花名册");
Row row = sheet.createRow(0);
// 设置行的高度
row.setHeightInPoints(30);
Cell cell1 = createCellWithMyStyle(wb,row,(short)0, HSSFCellStyle.ALIGN_LEFT,HSSFCellStyle.VERTICAL_CENTER);
cell1.setCellValue(new HSSFRichTextString("在希望的田野上"));
Cell cell2 = createCellWithMyStyle(wb,row,(short)1,HSSFCellStyle.ALIGN_RIGHT,HSSFCellStyle.VERTICAL_TOP);
cell2.setCellValue(new HSSFRichTextString("春天的故事"));
try {
FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls");
wb.write(fileOut);
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
一个私有的方法:
/**
* 创建一个单元格 ,并且这个单元格使用了我们自己设置的样式
* @param wb Workbook 对象
* @param row Row 对象
* @param column 设置单元格在 1 行中的第几列
* @param align 水平对齐方式
* @param vertical 垂直对齐方式
* @return
*/
private Cell createCellWithMyStyle(Workbook wb,Row row,short column,short align,short vertical){
Cell cell = row.createCell(column);
cellStyle =wb.createCellStyle();
// 设置单元格水平方向对其方式(默认左对齐)
cellStyle.setAlignment(align);
// 设置单元格垂直方向对其方式
cellStyle.setVerticalAlignment(vertical);
// 设置单元格样式
cell.setCellStyle(cellStyle);
return cell;
}
2、单元格边框处理
下面的代码演示了设置单元格边框和边框颜色的操作。
参考资料:
POI之IndexedColors中所有颜色索引 - 疯狂JAVA - ITeye技术网站
http://jlcon.iteye.com/blog/1122538
示例代码:
@Test
public void test02(){
Workbook wb = new HSSFWorkbook();// 定义一个新的工作簿
Sheet sheet = wb.createSheet("三年级(2)班花名册");
Row row = sheet.createRow(1);
// 设置行的高度
row.setHeightInPoints(30);
Cell cell = row.createCell(1);
cell.setCellValue(new HSSFRichTextString("一九七九年,那是一个春天。有一位老人在中国的南海边写下诗篇。"));
CellStyle cellStyle = wb.createCellStyle();
// 设置底部边框
cellStyle.setBorderLeft(CellStyle.BORDER_THIN); // 细线
cellStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex());// 设置颜色
// 设置右边框
cellStyle.setBorderRight(CellStyle.BORDER_DASH_DOT);
cellStyle.setRightBorderColor(IndexedColors.GREEN.getIndex());
// 设置顶部的边框
cellStyle.setBorderTop(CellStyle.LEAST_DOTS);
cellStyle.setTopBorderColor(IndexedColors.BROWN.getIndex());
cell.setCellStyle(cellStyle);
try {
FileOutputStream fileOut=new FileOutputStream("c:\\工作簿.xls");
wb.write(fileOut);
wb.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
下面的这篇博客里介绍了很多样式的设置,供参考。
POI格式化Cell样式潇风新浪博客
http://blog.sina.com.cn/s/blog_8297f0d001018w13.html
3、单元格填充色和颜色操作
/**
* 单元格填充色和颜色操作
*/
@Test
public void test03(){
Workbook wb = new HSSFWorkbook(); // 定义一个新的工作簿
Sheet sheet = wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页
Row row = sheet.createRow(1); // 创建一个行
Cell cell = row.createCell(1);
cell.setCellValue("XX");
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillBackgroundColor(IndexedColors.AQUA.getIndex()); // 背景色
cellStyle.setFillPattern(CellStyle.BIG_SPOTS);
cell.setCellStyle(cellStyle);
Cell cell2 = row.createCell(2);
cell2.setCellValue("YYY");
CellStyle cellStyle2 = wb.createCellStyle();
cellStyle2.setFillForegroundColor(IndexedColors.RED.getIndex()); // 前景色
cellStyle2.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell2.setCellStyle(cellStyle2);
try {
FileOutputStream fileOut = new FileOutputStream("c:\\工作簿.xls");
wb.write(fileOut);
wb.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
4、单元格合并
写这部分代码的思路,就类似于你直接在 Excel 表格里面操作一样,要先创建好左上角的单元格数据。因为我们的 Excel 表格合并单元格只保留好左上角的单元格数据。
@Test
public void test04(){
Workbook wb = new HSSFWorkbook(); // 定义一个新的工作簿
Sheet sheet = wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页
Row row = sheet.createRow(1);
Cell cell = row.createCell(3);
cell.setCellValue("有一位老人在中国的南海边写下诗篇。");
// 创建合并单元格 应该是 Sheet 的任务
// 合并了 第 2 行至第 6 行,第 4 列至第 9 列的单元格
sheet.addMergedRegion(new CellRangeAddress(1, 5, 3, 8));
try {
FileOutputStream fileOut = new FileOutputStream("c:\\工作簿.xls");
wb.write(fileOut);
wb.close();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}