2012-06-06 4 views

ответ

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; 
    } 
0

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

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

Если бы я хотел, чтобы моя клетка иметь lighgray цвет, который я использовал бы 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 
+0

Этот ответ хорошо, ключевой проблемой для меня было то, что для установки «фонового» цвета вам действительно нужен объект TFlxFormat, FillPattern.Pattern - TFlxPatternStyle.Solid, а затем немного смутно вам нужно установить свойство FgColor на цвет, который вы хотите для фон. Разработчик объясняет это здесь: [bgColor vs fgColor] (http://www.tmssoftware.com/SITE/forum/forum_posts.asp?TID=5743&KW=background&PID=21596&title=bgcolor-vs-fgcolor#21596) – Shaun

Смежные вопросы