前言:昨天使用java导出excel文件,把单元格设置成自定义的背景颜色。
一、导入依赖
需要使用5.2.3的最新版本,老的版本不支持自定义颜色
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
二、创建一个ExportExcel文件
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.DefaultIndexedColorMap;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ExportExcel {
public static void main(String[] args) {
try {
exportExcel("E:\\\\test\\\\11\\\\1222.xlsx");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void exportExcel(String fileName) throws IOException {
Workbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿
Sheet sheet = workbook.createSheet("课表"); // 在工作簿中创建一个名为"课表"的工作表
// 设置字体大小
Font font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 18);
// 字体颜色
font.setColor(IndexedColors.WHITE.index);
// 创建单元格样式
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
// 自定义颜色
cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(89,142,173), new DefaultIndexedColorMap()));
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
// 设置边框颜色
cellStyle.setTopBorderColor(IndexedColors.WHITE.getIndex());
cellStyle.setLeftBorderColor(IndexedColors.WHITE.getIndex());
cellStyle.setRightBorderColor(IndexedColors.WHITE.getIndex());
cellStyle.setBottomBorderColor(IndexedColors.WHITE.getIndex());
// 文字居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
// 制造数据
List<List<String>> classList=new ArrayList<>();
List<String> titleList=new ArrayList<>();
titleList.add("");
titleList.add("周一");
titleList.add("周二");
titleList.add("周三");
titleList.add("周四");
titleList.add("周五");
classList.add(titleList);
List<String> list1=new ArrayList<>();
list1.add("1");
list1.add("科学");
list1.add("数学");
list1.add("语文");
list1.add("外语");
list1.add("语文");
classList.add(list1);
List<String> list2=new ArrayList<>();
list2.add("2");
list2.add("外语");
list2.add("数学");
list2.add("体育");
list2.add("阅读");
list2.add("语文");
classList.add(list2);
// 创建一些单元格并设置值
for (int i = 0; i < classList.size(); i++) {
// 行
Row row = sheet.createRow(i);
for (int j = 0; j < classList.get(i).size(); j++) {
// 列
Cell cell = row.createCell(j);
cell.setCellValue(classList.get(i).get(j));
// 设置单元格样式
cell.setCellStyle(cellStyle);
}
}
// 设置列宽为5000像素
for (int i = 0; i < 8; i++) {
sheet.setColumnWidth(i, 5000);
}
sheet.setDefaultRowHeightInPoints(30); // 设置行高为30磅
// 将工作簿写入文件
try (FileOutputStream fileOut = new FileOutputStream(fileName)) {
workbook.write(fileOut);
}
// 关闭工作簿
workbook.close();
}
}
三、效果