java POI Excel 单元格样式

本文介绍了使用Apache POI库为Excel文件设置不同样式的具体方法,包括单元格对齐方式、边框、背景及合并单元格等操作。

正如Html需要CSS一样,我们的POI生成的Excel同样需要样式才能更完美的表现我们的数据。下面还是从简单的例子出发,学习和了解POI的样式设计。

  一、我的位置。

1 package com.myjava.poi;
 2 
 3 import java.io.FileOutputStream;
 4 import java.util.Date;
 5 
 6 import org.apache.poi.hssf.usermodel.HSSFCell;
 7 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 8 import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
10 import org.apache.poi.ss.usermodel.Cell;
11 import org.apache.poi.ss.usermodel.CellStyle;
12 import org.apache.poi.ss.usermodel.Row;
13 import org.apache.poi.ss.usermodel.Sheet;
14 import org.apache.poi.ss.usermodel.Workbook;
15 
16 public class ExcelStyle {
17 
18     public static void main(String[] args) throws Exception{
19         Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
20         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
21         Row row=sheet.createRow(2); // 创建一个行
22         row.setHeightInPoints(30);
23         
24         createCell(wb, row, (short)0, HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_BOTTOM);
25         createCell(wb, row, (short)1, HSSFCellStyle.ALIGN_FILL, HSSFCellStyle.VERTICAL_CENTER);
26         createCell(wb, row, (short)2, HSSFCellStyle.ALIGN_LEFT, HSSFCellStyle.VERTICAL_TOP);
27         createCell(wb, row, (short)3, HSSFCellStyle.ALIGN_RIGHT, HSSFCellStyle.VERTICAL_TOP);
28         
29         FileOutputStream fileOut=new FileOutputStream("D:\\工作簿.xls");
30         wb.write(fileOut);
31         fileOut.close();
32     }
33     
34     /**
35      * 创建一个单元格并为其设定指定的对齐方式
36      * @param wb 工作簿
37      * @param row 行
38      * @param column  列
39      * @param halign  水平方向对其方式
40      * @param valign  垂直方向对其方式
41      */
42     private static void createCell(Workbook wb,Row row,short column,short halign,short valign){
43         Cell cell=row.createCell(column);  // 创建单元格
44         cell.setCellValue(new HSSFRichTextString("我在这"));  // 设置值
45         CellStyle cellStyle=wb.createCellStyle(); // 创建单元格样式
46         cellStyle.setAlignment(halign);  // 设置单元格水平方向对其方式
47         cellStyle.setVerticalAlignment(valign); // 设置单元格垂直方向对其方式
48         cell.setCellStyle(cellStyle); // 设置单元格样式
    
}
}

 

  效果显示:

  

  二、我的边框

 

 1 package com.myjava.poi;
 2  
 3  import java.io.FileOutputStream;
 4  import java.util.Calendar;
 5  import java.util.Date;
 6  
 7  import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 8  import org.apache.poi.ss.usermodel.Cell;
 9  import org.apache.poi.ss.usermodel.CellStyle;
10  import org.apache.poi.ss.usermodel.CreationHelper;
11  import org.apache.poi.ss.usermodel.IndexedColors;
12  import org.apache.poi.ss.usermodel.Row;
13  import org.apache.poi.ss.usermodel.Sheet;
14  import org.apache.poi.ss.usermodel.Workbook;
15  
16 public class Border {
17  
18     public static void main(String[] args) throws Exception{
19          Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
20         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
21          Row row=sheet.createRow(1); // 创建一个行
22          
23          Cell cell=row.createCell(1); // 创建一个单元格
24          cell.setCellValue(4);
25          
26          CellStyle cellStyle=wb.createCellStyle(); 
27          cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 底部边框
28          cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // 底部边框颜色         
29         cellStyle.setBorderLeft(CellStyle.BORDER_THIN);  // 左边边框
30          cellStyle.setLeftBorderColor(IndexedColors.RED.getIndex()); // 左边边框颜色
31         
32          cellStyle.setBorderRight(CellStyle.BORDER_THIN); // 右边边框
33          cellStyle.setRightBorderColor(IndexedColors.BLUE.getIndex());  // 右边边框颜色         
34          cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED); // 上边边框
35          cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());  // 上边边框颜色
36          
37         cell.setCellStyle(cellStyle);
38          FileOutputStream fileOut=new FileOutputStream("D:\\Border.xls");
39          wb.write(fileOut);
40          fileOut.close();
41      }
42 }

 

 

  效果显示:

  

  三、我的背景

  

package com.myjava.poi;
 2 
 3 import java.io.FileOutputStream;
 4 import java.util.Calendar;
 5 import java.util.Date;
 6 
 7 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 8 import org.apache.poi.ss.usermodel.Cell;
 9 import org.apache.poi.ss.usermodel.CellStyle;
10 import org.apache.poi.ss.usermodel.CreationHelper;
11 import org.apache.poi.ss.usermodel.IndexedColors;
12 import org.apache.poi.ss.usermodel.Row;
13 import org.apache.poi.ss.usermodel.Sheet;
14 import org.apache.poi.ss.usermodel.Workbook;
15 
16 public class Bg {
17 
18     public static void main(String[] args) throws Exception{
19         Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
20         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
21         Row row=sheet.createRow(1); // 创建一个行
22         
23         Cell cell=row.createCell(1);
24         cell.setCellValue("看不清我");
25         CellStyle cellStyle=wb.createCellStyle();
26         cellStyle.setFillBackgroundColor(IndexedColors.AQUA.getIndex()); // 背景色
27         cellStyle.setFillPattern(CellStyle.BIG_SPOTS);  
28         cell.setCellStyle(cellStyle);
29         
30         
31         Cell cell2=row.createCell(2);
32         cell2.setCellValue("我的前景色与众不同");
33         CellStyle cellStyle2=wb.createCellStyle();
34         cellStyle2.setFillForegroundColor(IndexedColors.RED.getIndex()); // 前景色
35         cellStyle2.setFillPattern(CellStyle.SOLID_FOREGROUND);  
36         cell2.setCellStyle(cellStyle2);
37         
38         FileOutputStream fileOut=new FileOutputStream("D:\\bg.xls");
39         wb.write(fileOut);
40         fileOut.close();
41     }
42 }

  效果显示:

  

  四、合并单元格

  

package com.myjava.poi;
 2 
 3 import java.io.FileOutputStream;
 4 import java.util.Calendar;
 5 import java.util.Date;
 6 
 7 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 8 import org.apache.poi.ss.usermodel.Cell;
 9 import org.apache.poi.ss.usermodel.CellStyle;
10 import org.apache.poi.ss.usermodel.CreationHelper;
11 import org.apache.poi.ss.usermodel.IndexedColors;
12 import org.apache.poi.ss.usermodel.Row;
13 import org.apache.poi.ss.usermodel.Sheet;
14 import org.apache.poi.ss.usermodel.Workbook;
15 import org.apache.poi.ss.util.CellRangeAddress;
16 
17 public class GetTogether {
18 
19     public static void main(String[] args) throws Exception{
20         Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
21         Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
22         Row row=sheet.createRow(1); // 创建一个行
23         
24         Cell cell=row.createCell(1);
25         cell.setCellValue("我们被合并单元格啦!");
26         
27         sheet.addMergedRegion(new CellRangeAddress(
28                 1, // 起始行
29                 2, // 结束行
30                 1, // 其实列
31                 2  // 结束列
32         ));
33         
34         
35         FileOutputStream fileOut=new FileOutputStream("D:\\Together.xls");
36         wb.write(fileOut);
37         fileOut.close();
38     }
39 }

 

  效果显示:

  

转载于:https://www.cnblogs.com/yanjie-java/p/8329276.html

### 使用 Java Apache POI 设置 Excel 单元格边框 以下是通过 Java 的 Apache POI 库为 Excel 单元格设置边框的示例代码: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; public class PoiBorderExample { public static void main(String[] args) throws Exception { Workbook workbook = new HSSFWorkbook(); // 创建工作簿对象 (HSSF 或 XSSF) Sheet sheet = workbook.createSheet("Sheet1"); // 创建表单 Row row = sheet.createRow(0); // 创建第 0 行 Cell cell = row.createCell(0); // 创建第 0 列单元格 // 添加数据到单元格 cell.setCellValue("带边框的单元格"); // 定义样式并设置边框属性 CellStyle style = workbook.createCellStyle(); style.setBorderTop(BorderStyle.MEDIUM); // 上边框 style.setBorderBottom(BorderStyle.MEDIUM); // 下边框 style.setBorderLeft(BorderStyle.MEDIUM); // 左边框 style.setBorderRight(BorderStyle.MEDIUM); // 右边框 // 将样式应用到单元格 cell.setCellStyle(style); // 合并单元格并设置外边框 CellRangeAddress region = new CellRangeAddress(2, 3, 2, 3); sheet.addMergedRegion(region); RegionUtil.setBorderTop(BorderStyle.THICK, region, sheet); // 合并区域上边框 RegionUtil.setBorderBottom(BorderStyle.THICK, region, sheet); // 合并区域下边框 RegionUtil.setBorderLeft(BorderStyle.THICK, region, sheet); // 合并区域左边框 RegionUtil.setBorderRight(BorderStyle.THICK, region, sheet); // 合并区域右边框 // 输出文件 try (FileOutputStream fos = new FileOutputStream("output.xls")) { workbook.write(fos); } workbook.close(); } } ``` 上述代码展示了如何创建一个带有边框样式单元格以及如何合并多个单元格并为其添加外部边框。 #### 关键点说明: - `BorderStyle` 枚举用于定义不同类型的边框线条宽度,例如 `THIN`, `MEDIUM`, 和 `THICK`[^1]。 - 对于合并单元格的情况,可以使用 `CellRangeAddress` 来指定要合并的范围,并利用 `RegionUtil` 类来单独设置每个方向上的边框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值