gpt4 book ai didi

java - 设置行中每个表格单元格的颜色

转载 作者:行者123 更新时间:2023-12-01 10:31:49 25 4
gpt4 key购买 nike

我有一个 Servlet,它接收一组数据,对其进行处理,然后根据表单提交将其写入 Excel 文件或文本页面。处理 Excel 时,所有处理都在使用 Apache POI 的相应模型中进行。我正在尝试修改它,以便它根据包含的数据对行进行颜色编码,但是,在将颜色应用于行后,当我将工作簿写入文件输出流时,颜色不存在。我正在将数据处理到 Excel 文件中,如下所示:

MCVE

package mcve;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Set;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class MCVE {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
LinkedHashMap<Integer, String> testReport = new LinkedHashMap<>();

testReport.put(0, "CPU");
testReport.put(1, "App");
testReport.put(2, "Other");
testReport.put(3, "Memory");
testReport.put(4, "Power");
testReport.put(5, "Disk");

File file = new File("C:/SplunkTesting/report.xlsx");
FileOutputStream out = new FileOutputStream(file);
writeToExcel(testReport).write(out);
out.flush();
out.close();
}

private static XSSFWorkbook writeToExcel(LinkedHashMap<Integer, String> formattedReport) {
try {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
int rowIndex = sheet.getLastRowNum();
Set<Integer> keySet = formattedReport.keySet();
for (Integer key : keySet) {
XSSFRow row = sheet.createRow(rowIndex++);
String line = formattedReport.get(key);
String[] strArr = line.split(",");
int cellCount = 0;
for (String str : strArr) {
XSSFCell cell = row.createCell(cellCount++);
cell.setCellValue(str);
}

XSSFCellStyle style = workbook.createCellStyle();
if (line.contains("App")) {
style.setFillForegroundColor(IndexedColors.BLUE.getIndex());
} else if (line.contains("CPU")) {
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
} else if (line.contains("Disk")) {
style.setFillForegroundColor(IndexedColors.GOLD.getIndex());
} else if (line.contains("Memory")) {
style.setFillForegroundColor(IndexedColors.INDIGO.getIndex());
} else if (line.contains("Network")) {
style.setFillForegroundColor(IndexedColors.LAVENDER.getIndex());
} else if (line.contains("Power")) {
style.setFillForegroundColor(IndexedColors.MAROON.getIndex());
} else {
style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
}
style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
row.setRowStyle(style);
}

return workbook;

} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

我仍然收到 Excel 文件,但格式不存在。我究竟做错了什么?

最佳答案

我的解决方案是在单元格创建和值设置循环中设置样式。否则,创建的每个单元格都会覆盖行格式,这就是我失败的原因。即使您在创建单元格后设置行格式,情况也是如此。

关于java - 设置行中每个表格单元格的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com