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

这份笔记里主要介绍了以下的内容:
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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值