C# Flexcel. Променете цвета на фоновата клетка. Отлично

Използвам библиотека Flexcel и искам да променя цвета на клетката в таблицата (документ на Excel).

Как мога да го направя? Не мога да намеря необходимия API. Мога ли да го направя с Flexcell?

въведете описание на изображението тук


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


Отговори (3)


Не съм използвал този 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;
    }
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