我正在使用java poi生成excel文件,并尝试为excel中的列标题添加背景颜色。
Row row = sheet.createRow(0);
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(CellStyle.BIG_SPOTS);
row.setRowStyle(style);
for(RiskVo h : selectedExcel){
row.createCell(h.getIndex()).setCellValue(h.getRisk_disc_en());
}
但颜色仅显示在低到空的列中。
答案 0 :(得分:2)
首先,创建单元格,然后在循环内设置样式。这对我有用。
Row row = sheet.createRow(0);
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
for(RiskVo h : selectedExcel){
row.createCell(h.getIndex()).setCellValue(h.getRisk_disc_en());
row.getCell(h.getIndex()).setCellStyle(style);
}
答案 1 :(得分:0)
我猜你的h.getIndex()
从工作表的开头开始。因此,在为行设置样式后,您可以在行的开头创建新单元格并将现有单元格移动到右侧。您的解决方案是:
实施例
Row row = sheet.createRow(0);
for(RiskVo h : selectedExcel){
row.createCell(h.getIndex()).setCellValue(h.getRisk_disc_en());
}
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(CellStyle.BIG_SPOTS);
row.setRowStyle(style);
答案 2 :(得分:0)
我创建了一个非常方便的实用工具类,可以非常轻松地为单元格的背景着色,更改文本颜色,以及从代码创建非常棒的电子表格所需的许多其他内容。它们是静态方法,并立即返回CellStyle
。
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Workbook;
/*
Utility Class for Spreadsheet Cell Styling
*/
public class CellStyles {
public static CellStyle getTableHeaderStyle(Workbook workbook){
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setFontName("Times New Roman");
style.setWrapText(true);
style.setFont(font);
style.setAlignment(CellStyle.ALIGN_CENTER);
style.setLocked(true);
return style;
}
public static CellStyle getShadedCellStyle(Workbook workbook, HSSFColor foreground, HSSFColor background ){
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setFontName("Times New Roman");
style.setFont(font);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFillForegroundColor(foreground.getIndex());
style.setFillBackgroundColor(background.getIndex());
style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBorderTop(CellStyle.BORDER_THIN);
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setBorderRight(CellStyle.BORDER_THIN);
style.setWrapText(true);
style.setAlignment(CellStyle.ALIGN_CENTER);
style.setLocked(true);
return style;
}
public static CellStyle getColoredTextCellStyle(Workbook workbook, HSSFColor color){
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setFontName("Times New Roman");
style.setFont(font);
style.setFillBackgroundColor(color.getIndex());
style.setAlignment(CellStyle.ALIGN_CENTER);
style.setWrapText(true);
font.setColor(color.getIndex());
return style;
}
}
一个例子是:
Workbook workbook = new HSSFWorkbook();
CellStyle style = CellStyles.getShadedCellStyle(workbook, new HSSFColor.BRIGHT_GREEN(), new HSSFColor.BLACK()));
...
someCell.setCellStyle(style);