一、设置字体
// 设置字体属性
Font font = workbook.createFont(); // 创建字体对象
font.setItalic(true); // 设置字体倾斜
font.setColor(Font.COLOR_RED); // 设置字体颜色
font.setFontHeightInPoints((short)22); // 设置字体大小
font.setFontName("宋体"); // 设置字体名称
font.setUnderline(Font.U_DOUBLE); // 设置下划线(Font.U_SINGLE:单线;Font.U_DOUBLE:双线)
font.setBold(true); // 设置字体加粗
font.setStrikeout(true); // 设置删除线
// 应用到单元格
Row fontRow = sheet.createRow((short)0); // 创建行对象
Cell fontCell = fontRow.createCell(0); // 创建单元格
CellStyle fontStyle = workbook.createCellStyle(); // 创建单元格样式
fontStyle.setFont(font); // 将字体应用到样式
fontCell.setCellStyle(fontStyle); // 将样式应用到单元格
fontCell.setCellValue("测试字体"); // 测试
二、设置边框
// 设置边框属性
CellStyle borderStyle = workbook.createCellStyle(); // 创建单元格样式对象
borderStyle.setBorderBottom(BorderStyle.THICK); // 设置下边框(DOUBLE:双线;THIN:细线)
borderStyle.setBorderTop(BorderStyle.DASHED); // 设置上边框(MEDIUM:中等线;DASHED:虚线)
borderStyle.setBorderLeft(BorderStyle.DOUBLE); // 设置左边框(HAIR:圆点线;THICK:粗线)
borderStyle.setBorderRight(BorderStyle.THIN); // 设置右边框(旧版考虑:CellStyle.BORDER_THICK)
borderStyle.setBottomBorderColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); // 设置下边框颜色(通过HSSFColor的枚举类型获取索引)
borderStyle.setTopBorderColor(new XSSFColor(java.awt.Color.GREEN).getIndex()); // 设置上边框颜色(通过XSSFColor的构造方法获取索引)
// 应用到单元格
Row borderRow = sheet.createRow(2); // 创建行对象
Cell borderCell = borderRow.createCell(2); // 创建单元格
borderCell.setCellStyle(borderStyle); // 将边框应用到单元格
borderCell.setCellValue("测试边框"); // 测试
三、设置对齐
// 设置对齐属性
CellStyle alignStyle = workbook.createCellStyle(); // 创建单元格样式对象
alignStyle.setAlignment(HorizontalAlignment.CENTER); // 设置水平对齐(CENTER:居中;LEFT:左;RIGHT:右。旧版考虑:XSSFCellStyle.ALIGN_RIGHT)
alignStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置垂直对齐(CENTER:居中;TOP:上;BOTTOM:下;旧版考虑:XSSFCellStyle.VERTICAL_CENTER)
// 应用到单元格
Row alignRow = sheet.createRow(4); // 创建行对象
Cell alignCell = alignRow.createCell(4); // 创建单元格
alignCell.setCellStyle(alignStyle); // 将对齐应用到单元格
alignCell.setCellValue("测试对齐"); // 测试
四、自动对齐
// 设置换行属性
CellStyle wrapStyle = workbook.createCellStyle(); // 创建单元格样式对象
wrapStyle.setWrapText(true); // 设置单元格自动换行
// 应用到单元格
Row wrapRow = sheet.createRow(6); // 创建行对象
Cell wrapCell = wrapRow.createCell(6); // 创建单元格
wrapCell.setCellStyle(wrapStyle); // 将对齐应用到单元格
wrapCell.setCellValue("测试单元格自动换行"); // 测试
五、影响范围
// 获取默认样式,修改将影响所有单元格
CellStyle cs = cell.getCellStyle();
// 创建新的样式,只影响被设置的单元格
CellStyle cs = workbook.createCellStyle();
六、背景色和背景图案
/**
* 只设置背景色参数,是没有效果的,背景色只有在和前景色组合形成图案时有效
* 设置前景色必须同时设置填充样式,样式为无缝铺满时即为常规需求下的背景色效果
* 设置图案时,前景色的设置要在背景色之前,否则背景色的设置将失效并使用黑色
*/
// 设置背景颜色
CellStyle backStyle = workbook.createCellStyle(); // 创建单元格样式对象
backStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); // 设置前景色
backStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 前景色平铺方式(SOLID_FOREGROUND:无缝铺满;SQUARES:网格;BRICKS:砖块)
// 应用到单元格
Row backRow = sheet.createRow(8); // 创建行对象
Cell backCell = backRow.createCell(8); // 创建单元格
backCell.setCellStyle(backStyle); // 将对齐应用到单元格
backCell.setCellValue("测试背景色"); // 测试
// 设置图案背景
CellStyle backStyle = workbook.createCellStyle(); // 创建单元格样式对象
backStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); // 设置前景色
backStyle.setFillBackgroundColor(IndexedColors.GREEN.getIndex()); // 设置背景色
backStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 前景色平铺方式(SOLID_FOREGROUND:无缝铺满;SQUARES:网格;BRICKS:砖块)
// 应用到单元格
Row backRow = sheet.createRow(8); // 创建行对象
Cell backCell = backRow.createCell(8); // 创建单元格
backCell.setCellStyle(backStyle); // 将对齐应用到单元格
backCell.setCellValue("测试图案背景"); // 测试
附录
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFColor;
|