0

我正在使用 Flexcel 库并想更改表格(Excel 文档)中单元格的颜色。

我该怎么做?我找不到必要的 API。我可以用 Flexcell 做到这一点吗?

在此处输入图像描述

4

3 回答 3

5

我在尝试设置单元格的背景颜色时遇到了同样的问题。我从未设法直接设置它,但我确实设法设置了单元格的 FillPattern,它实际上设置了背景颜色。

在这里,我有一个私有方法,可以设置我计划使用的 4 种不同的背景颜色。请注意,当您添加样式时,您会将它们直接添加到 Excel 文件中。这就是为什么我将 excelFile 传递给此方法然后取回 excelFile 的原因。您必须先将样式添加到 excelFile,然后才能使用样式。

        private XlsFile SetUpBackgroundColours(XlsFile excelFile)
    {
        var patternStyle = TFlxPatternStyle.Solid;

        TFlxFormat format = excelFile.GetDefaultFormat;
        format.FillPattern = new TFlxFillPattern { Pattern = patternStyle, FgColor = Color.Yellow }; //1
        format.VAlignment = TVFlxAlignment.top;
        format.HAlignment = THFlxAlignment.left;
        excelFile.AddFormat(format);

        format.FillPattern = new TFlxFillPattern { Pattern = patternStyle, FgColor = Color.LightBlue }; //2
        format.VAlignment = TVFlxAlignment.top;
        format.HAlignment = THFlxAlignment.left;
        excelFile.AddFormat(format);

        format.FillPattern = new TFlxFillPattern { Pattern = patternStyle, FgColor = Color.LightGray }; //3
        format.VAlignment = TVFlxAlignment.top;
        format.HAlignment = THFlxAlignment.left;
        excelFile.AddFormat(format);

        format.FillPattern = new TFlxFillPattern { Pattern = patternStyle, FgColor = Color.White }; //4
        format.VAlignment = TVFlxAlignment.top;
        format.HAlignment = THFlxAlignment.left;
        excelFile.AddFormat(format);

        return excelFile;
    }

这将设置 4 个新样式,然后我可以使用它们添加顺序的索引来引用它们。Flexcel 的索引从 1 开始。

因此,当您使用 SetCellValue 方法在单元格中添加值时,您可以提供已添加的样式的索引以更改背景颜色。以下显示了如何执行此操作的示例:

excelFile.SetCellValue(rowNumber, columnNumber, "Some text for the cell", 1)

在您看到 1 作为方法的最后一个值的地方,这个 1 指的是我使用上面的 SetUpBackgroundColours() 方法添加到 Excel 文件中的第一个样式。

如果我希望我的单元格具有浅灰色,我将使用 3 而不是 1,如下所示:

excelFile.SetCellValue(rowNumber, columnNumber, "Some text for the cell", 3)

一些显示调用 SetUpBackgroundColours 的附加代码:

var excelFile = new XlsFile(true);
excelFile.NewFile(someList.Count() + 1, TExcelFileFormat.v2007);
var sheetIndex = 0;
excelFile = SetUpBackgroundColours(excelFile);

excelFile.SetCellValue(1, 1, "Some text for the cell A1", 1) //cell colour will be yellow
excelFile.SetCellValue(2, 2, "Some text for the cell B1", 2) //cell colour will be lightblue
于 2013-03-14T10:38:46.273 回答
2

我没有使用过那个 API,但如果你找不到方法,这就是你可以用 C# 做到的方法:

    //http://www.mvps.org/dmcritchie/excel/colors.htm
    private void setCellColor(Microsoft.Office.Interop.Excel.Range cell, int index)
    {
        cell.Interior.ColorIndex = index;
    }
于 2012-06-06T14:53:40.730 回答
0

您可以使用 TFlxFormat 类来应用颜色。使用这个类你可以应用你想要的任何格式。

于 2012-08-27T03:54:05.447 回答