当前位置: 首页 > 知识库问答 >
问题:

Java apache POI:excel单元格颜色

卢鸿博
2023-03-14

我正在尝试用apache POI更改单元格的背景。

CellStyle#setFillPattern(CellStyle.SOLID_FOREGROUND);
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Mcve{
    public static void main(String[] args) {

    //Make workbook and first sheet
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("sheet1");

    //Make a style
    XSSFCellStyle style = workbook.createCellStyle();
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    style.setFillBackgroundColor(IndexedColors.RED.getIndex());

    //Fill first line
    Row row = sheet.createRow(0);

    int i = 0;
    while (i < 5) {

        Cell cell = row.createCell(i);
        cell.setCellValue("TestCell " + i++);
                    cell.setCellStyle(style);
    }

    //Write to file
    File f = new File("Yourfilepathhere/document.xlsx"); //<-- FILL HERE

    try (FileOutputStream out = new FileOutputStream(f)) {
        workbook.write(out);
        workbook.close();
    } catch (Exception e) {
        e.printStackTrace();

    }
}
}

伙计们,我做错什么了?

共有1个答案

张玺
2023-03-14

看起来像bug,但您可以尝试设置forground color而不是Background color。

 XSSFCellStyle style = workbook.createCellStyle();
 style.setFillForegroundColor(IndexedColors.RED.getIndex());
 style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
 row.getCell(0).setCellStyle(style);

这将设置您的背景颜色。

 类似资料:
  • 问题内容: 我想制作一个可编辑的表,然后检查数据以确保其有效。我不确定如何仅更改一个单元格的颜色。我想要一个单元格,例如(0,0)并将前景颜色设置为红色。我已经阅读了SO和Oracle上有关自定义ColorRenderer的其他文章,但是我不知道如何使用它。 谢谢。 问题答案: 假设您要用其他颜色渲染的单元格代表一种状态(我将以“拒绝并批准”为例)。然后,我将在我的表模型中实现一个名为getSta

  • 问题内容: 我试图使自己熟悉JTables,TableModels,JTableHeaders,渲染器等。我试图制作一个简单的虚拟表(出于练习目的),看起来像这样: 我还希望B2单元格-并且只有该单元格-具有蓝色(Color.BLUE)背景-所有其他单元格都可以具有自动分配的Swing默认颜色。 我的代码在下面,并且基于我在本网站和整个互联网上发现的无数示例。但是我没有得到想要的结果。相反,我得到

  • 问题内容: 我正在使用openpyxl读取Excel文件。我想从“ xlsx”文件中获取单元格颜色。我试图获得颜色,以便: 我得到“ 11L”,但我需要得到rgb颜色,我该怎么办? 问题答案: 看起来工作表正在使用内置的颜色索引。这些的映射位于 11L对应于0000FF00(十六进制),其rgb元组将为绿色(0,255,0)。

  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 问题内容: 我目前正在针对Python 2.7使用openpyxl v2.2.2,我想为单元格设置颜色。我已经使用以下进口 以下是我尝试使用的代码: 但出现以下错误: 关于如何使用openpyxl设置单元格A1(或其他单元格)颜色的想法? 问题答案: 我认为问题在于您正在尝试将填充对象分配给样式。 应该工作正常。