一起学习 POI (使用 maven 构建)(3)-为单元格数据设置对齐、边框、背景、合并单元格

来源:互联网 发布:白酒网络营销策划书 编辑:程序博客网 时间:2024/06/02 13:12

这份笔记里主要介绍了以下的内容:
1、单元格对齐方式
2、单元格边框处理
3、单元格填充色和颜色操作
4、单元格合并
第 3 讲的示例代码是:Demo8-Demo11。

1、单元格对齐方式

/** * 设置单元格对齐的方式 */@Testpublic 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
示例代码:

@Testpublic 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、单元格填充色和颜色操作

/** * 单元格填充色和颜色操作 */@Testpublic 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 表格合并单元格只保留好左上角的单元格数据。

@Testpublic 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();    }}
0 0
原创粉丝点击