Apache-POI 设置excel单元格样式字体等

大概思路就是设置样式以及字体后添加进单元格中

Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.getSheetAt(0);
//创建单元格
Row row = sheet.getRow(0);
if(null == row){
    row = sheet.createRow(0);
}
Cell cell = row.getCell(0);
if(null == cell) {
    cell = row.createCell(0);
}
//创建样式
CellStyle style = wb.createCellStyle();
//自动换行
style.setWrapText(true);
//水平对齐方式(居中)
style.setAlignment(HorizontalAlignment.CENTER);
//垂直对齐方式(居中)
style.setVerticalAlignment(VerticalAlignment.CENTER);
//创建字体设置
Font baseFont = wb.createFont();
//字体
baseFont.setFontName("宋体");
//大小
baseFont.setFontHeightInPoints((short)12);
style.setFont(baseFont);

//将样式设置应用具体单元格
cell.setCellStyle(style);

 

Apache POI 中,**设置 Excel 单元格样式**是通过 `CellStyle` 接口来完成的。你可以设置字体、背景颜色、边框、对齐方式、数据格式等。 --- ## ✅ Apache POI 设置单元格样式详解 ### 🧠 样式设置的基本流程: 1. 创建 `Workbook`(如 `XSSFWorkbook`) 2. 创建 `CellStyle` 对象 3. 配置样式字体、颜色、对齐方式等) 4. 将样式应用到某个单元格或整行 --- ### ✅ 示例代码:设置单元格样式 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelCellStyleExample { public static void main(String[] args) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Styled Sheet"); // 创建样式 CellStyle headerStyle = workbook.createCellStyle(); Font font = workbook.createFont(); // 设置字体样式 font.setBold(true); font.setColor(IndexedColors.WHITE.getIndex()); font.setFontHeightInPoints((short) 12); // 设置背景颜色 headerStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 设置对齐方式 headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置边框 headerStyle.setBorderBottom(BorderStyle.THIN); headerStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); headerStyle.setBorderLeft(BorderStyle.THIN); headerStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex()); headerStyle.setBorderRight(BorderStyle.THIN); headerStyle.setRightBorderColor(IndexedColors.BLACK.getIndex()); headerStyle.setBorderTop(BorderStyle.THIN); headerStyle.setTopBorderColor(IndexedColors.BLACK.getIndex()); // 设置自动换行 headerStyle.setWrapText(true); // 创建表头行 Row headerRow = sheet.createRow(0); Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("标题"); headerCell.setCellStyle(headerStyle); // 设置列宽(单位是 1/256 个字符宽度) sheet.setColumnWidth(0, 20 * 256); // 写入文件 try (FileOutputStream fos = new FileOutputStream("StyledExcel.xlsx")) { workbook.write(fos); } workbook.close(); } } ``` --- ## ✅ 样式常用设置说明 | 功能 | 方法 | 说明 | |------|------|------| | 字体设置 | `setFont(Font font)` | 创建字体对象,设置字体样式 | | 背景颜色 | `setFillForegroundColor(short color)` + `setFillPattern(FillPatternType pattern)` | 前景色+填充模式组合成背景 | | 对齐方式 | `setAlignment(HorizontalAlignment align)` | 水平对齐 | | 垂直对齐 | `setVerticalAlignment(VerticalAlignment align)` | 垂直对齐 | | 边框 | `setBorderXXX(BorderStyle style)` | 上下左右边框 | | 自动换行 | `setWrapText(true)` | 单元格内容自动换行 | | 数据格式 | `setDataFormat(short format)` | 例如日期格式 `DataFormat` | --- ## ✅ 设置数据格式示例(如日期、数字) ```java CellStyle dateStyle = workbook.createCellStyle(); DataFormat format = workbook.createDataFormat(); dateStyle.setDataFormat(format.getFormat("yyyy-mm-dd")); Row row = sheet.createRow(1); Cell cell = row.createCell(0); cell.setCellValue(new Date()); cell.setCellStyle(dateStyle); ``` --- ## ✅ 注意事项 - **样式对象不能重复创建**:样式对象是有限资源,重复创建会消耗内存。建议**复用样式对象**。 - **不能跨 Workbook 使用样式**:每个 `Workbook` 都有自己的样式池。 - **性能优化**:使用 `SXSSFWorkbook` 时,样式同样可以使用,但要注意内存控制。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值