最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ExcelUtils的样式相关工具
时间:2026-06-04 09:03:06 编辑:袖梨 来源:一聚教程网
建议把样式相关工具统一放到 ExcelUtils 中的一个区域,例如:

// =========================
// Style 工具
// =========================
下面是整理后的完整版(带详细注释和参数说明)。
创建居中样式
/**
* 创建居中样式
*
* 功能:
* 1. 水平居中
* 2. 垂直居中
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createCenterStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); // 水平居中
style.setAlignment(
HorizontalAlignment.CENTER
); // 垂直居中
style.setVerticalAlignment(
VerticalAlignment.CENTER
); return style;
}
创建边框样式
/**
* 创建边框样式
*
* 功能:
* 给单元格增加四周边框
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createBorderStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); style.setBorderTop(
BorderStyle.THIN); style.setBorderBottom(
BorderStyle.THIN); style.setBorderLeft(
BorderStyle.THIN); style.setBorderRight(
BorderStyle.THIN); return style;
}
创建标题样式
/**
* 创建标题样式
*
* 示例:
* 考勤统计表
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createTitleStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); Font font =
workbook.createFont(); // 粗体
font.setBold(true); // 字体大小
font.setFontHeightInPoints(
(short) 16
); style.setFont(font); // 居中
style.setAlignment(
HorizontalAlignment.CENTER
); style.setVerticalAlignment(
VerticalAlignment.CENTER
); return style;
}
创建表头样式
/**
* 创建表头样式
*
* 功能:
* 适用于第一行表头
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createHeaderStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); Font font =
workbook.createFont(); font.setBold(true); style.setFont(font); style.setAlignment(
HorizontalAlignment.CENTER
); style.setVerticalAlignment(
VerticalAlignment.CENTER
); style.setBorderTop(
BorderStyle.THIN); style.setBorderBottom(
BorderStyle.THIN); style.setBorderLeft(
BorderStyle.THIN); style.setBorderRight(
BorderStyle.THIN); return style;
}
自动换行
/**
* 自动换行样式
*
* 示例:
* 第一行
* 第二行
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createWrapStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); style.setWrapText(true); return style;
}
竖向文字
/**
* 创建竖向文字样式
*
* 示例:
* 考
* 勤
* 统
* 计
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createVerticalTextStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); // 旋转90度
style.setRotation(
(short) 90
); style.setAlignment(
HorizontalAlignment.CENTER
); style.setVerticalAlignment(
VerticalAlignment.CENTER
); return style;
}
红色字体
/**
* 红色字体样式
*
* 适用于:
* 迟到
* 缺卡
* 旷工
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createRedFontStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); Font font =
workbook.createFont(); font.setColor(
IndexedColors.RED.getIndex()
); style.setFont(font); return style;
}
日期格式
/**
* 日期格式
*
* yyyy-MM-dd
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createDateStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); DataFormat format =
workbook.createDataFormat(); style.setDataFormat(
format.getFormat(
"yyyy-MM-dd"
)
); return style;
}
时间格式
/**
* 时间格式
*
* HH:mm:ss
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createTimeStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); DataFormat format =
workbook.createDataFormat(); style.setDataFormat(
format.getFormat(
"HH:mm:ss"
)
); return style;
}
百分比格式
/**
* 百分比格式
*
* 12.35%
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createPercentStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); DataFormat format =
workbook.createDataFormat(); style.setDataFormat(
format.getFormat(
"0.00%"
)
); return style;
}
金额格式
/**
* 金额格式
*
* 1,999.00
*
* @param workbook 工作簿
* @return CellStyle
*/
public static CellStyle createMoneyStyle(
Workbook workbook) { CellStyle style =
workbook.createCellStyle(); DataFormat format =
workbook.createDataFormat(); style.setDataFormat(
format.getFormat(
"#,##0.00"
)
); return style;
}
背景色
/**
* 创建背景色样式
*
* @param workbook 工作簿
* @param color 背景颜色
* 示例:
* IndexedColors.YELLOW
* IndexedColors.GREEN
* IndexedColors.RED
*
* @return CellStyle
*/
public static CellStyle createBackgroundStyle(
Workbook workbook,
IndexedColors color) { CellStyle style =
workbook.createCellStyle(); style.setFillForegroundColor(
color.getIndex()
); style.setFillPattern(
FillPatternType.SOLID_FOREGROUND
); return style;
}
冻结表头
/**
* 冻结首行
*
* 效果:
* 下拉时表头固定
*
* @param sheet Sheet
*/
public static void freezeHeader(
Sheet sheet) { sheet.createFreezePane(
0,
1
);
}
自动列宽
/**
* 自动列宽
*
* @param sheet Sheet
* @param columnCount 列数量
*/
public static void autoSizeColumns(
Sheet sheet,
int columnCount) { for (int i = 0;
i < columnCount;
i++) { sheet.autoSizeColumn(i); int width =
sheet.getColumnWidth(i); sheet.setColumnWidth(
i,
Math.min(
width + 1000,
255 * 256
)
);
}
}
设置下拉框
需要额外导入:
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
/**
* 添加下拉框
*
* @param sheet Sheet
* @param values 下拉数据
* @param firstRow 开始行
* @param lastRow 结束行
* @param col 列号
*/
public static void addDropDownList(
Sheet sheet,
String[] values,
int firstRow,
int lastRow,
int col) { DataValidationHelper helper =
sheet.getDataValidationHelper(); DataValidationConstraint constraint =
helper.createExplicitListConstraint(
values
); CellRangeAddressList addressList =
new CellRangeAddressList(
firstRow,
lastRow,
col,
col
); DataValidation validation =
helper.createValidation(
constraint,
addressList
); sheet.addValidationData(
validation
);
}
插入图片
/**
* 插入图片
*
* @param workbook 工作簿
* @param sheet Sheet
* @param imageBytes 图片字节数组
* @param row 行号
* @param col 列号
*/
public static void insertImage(
Workbook workbook,
Sheet sheet,
byte[] imageBytes,
int row,
int col) { int pictureIdx =
workbook.addPicture(
imageBytes,
Workbook.PICTURE_TYPE_PNG
); Drawing<?> drawing =
sheet.createDrawingPatriarch(); CreationHelper helper =
workbook.getCreationHelper(); ClientAnchor anchor =
helper.createClientAnchor(); anchor.setRow1(row);
anchor.setCol1(col); Picture picture =
drawing.createPicture(
anchor,
pictureIdx
); picture.resize();
}
批量设置整行样式
/**
* 设置整行样式
*
* @param row 行
* @param style 样式
*/
public static void setRowStyle(
Row row,
CellStyle style) { for (Cell cell : row) { cell.setCellStyle(
style
);
}
}
复制单元格样式(非常实用)
/**
* 复制样式
*
* @param workbook 工作簿
* @param source 源样式
* @return 新样式
*/
public static CellStyle cloneStyle(
Workbook workbook,
CellStyle source) { CellStyle style =
workbook.createCellStyle(); style.cloneStyleFrom(
source
); return style;
}
相关文章
- Gemini下载怎么用?3个步骤搞定 06-04
- Gemini API密钥怎么申请?2026实测4种渠道对比 06-04
- 壹深圳app如何查看回放 06-04
- 我亲测了Gemini学生认证,全流程+踩坑记录 06-04
- Gemini 3.0使用教程 vs 4.0:3大区别与选择建议 06-04
- 干紫菜是紫色的炖汤后变成了绿色这是买到假紫菜了吗 小鸡宝宝考考你蚂蚁庄园3月9日答案 06-04