С# Flexcel. Изменить цвет фоновой ячейки. Excell

Я использую библиотеку Flexcel и хочу изменить цвет ячейки в таблице (документ Excel).

Как мне это сделать? Не могу найти нужный API. Могу ли я сделать это с помощью Flexcell?

введите здесь описание изображения


person user565447    schedule 06.06.2012    source источник


Ответы (3)


Я не использовал этот API, но если вы не можете найти способ, вот как вы можете сделать это с помощью С#:

    //http://www.mvps.org/dmcritchie/excel/colors.htm
    private void setCellColor(Microsoft.Office.Interop.Excel.Range cell, int index)
    {
        cell.Interior.ColorIndex = index;
    }
person Andrei Neagu    schedule 06.06.2012

У меня была такая же проблема, когда я пытался установить цвет фона ячейки. Мне никогда не удавалось установить его напрямую, но мне удалось установить 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 относится к первому стилю, который я добавил в файл Excel с помощью метода SetUpBackgroundColours() выше.

Если бы я хотел, чтобы моя ячейка имела светло-серый цвет, я бы использовал 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
person carey walker    schedule 14.03.2013
comment
Этот ответ хорош, ключевая проблема для меня заключалась в том, что для установки цвета фона вам действительно нужно иметь объект TFlxFormat, чей FillPattern.Pattern равен TFlxPatternStyle.Solid, а затем немного сбивает с толку, что вам нужно установить свойство FgColor на цвет, который вы хотите для фона. Разработчик объясняет это здесь: bgColor против fgColor - person Shaun; 27.09.2017

Вы можете использовать класс TFlxFormat для применения цвета. Используя этот класс, вы можете применить любой формат, какой захотите.

person Tabish Matin    schedule 27.08.2012