Я использую библиотеку Flexcel и хочу изменить цвет ячейки в таблице (документ Excel).
Как мне это сделать? Не могу найти нужный API. Могу ли я сделать это с помощью Flexcell?
Я использую библиотеку Flexcel и хочу изменить цвет ячейки в таблице (документ Excel).
Как мне это сделать? Не могу найти нужный API. Могу ли я сделать это с помощью Flexcell?
Я не использовал этот API, но если вы не можете найти способ, вот как вы можете сделать это с помощью С#:
//http://www.mvps.org/dmcritchie/excel/colors.htm
private void setCellColor(Microsoft.Office.Interop.Excel.Range cell, int index)
{
cell.Interior.ColorIndex = index;
}
У меня была такая же проблема, когда я пытался установить цвет фона ячейки. Мне никогда не удавалось установить его напрямую, но мне удалось установить 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
Вы можете использовать класс TFlxFormat для применения цвета. Используя этот класс, вы можете применить любой формат, какой захотите.