2009-10-06 1 views
1

Я пишу инструмент, который генерирует таблицу электронных таблиц (XML) для создания электронной таблицы Excel для моих пользователей.Таблицы ML Цвет текста (цвет) Рендеринг

Я определил стиль следующим образом:

 
<Style ss:ID="GreenText"> 
    <Font ss:FontName="Arial" ss:Size="9" ss:Color="#8CBE50" /> 
</Style> 

Это работает до некоторой степени, но при открытии его в Excel цвет визуализации для текста не один я определил - это более яркая версия , Я могу использовать ту же ссылку цвета для границы ячейки, и цвет отображается правильно.

Может ли кто-нибудь пролить свет на то, почему цвет текста не отображается правильно?

Спасибо!

ответ

0

Excel ограничен палитрой из 56 цветов. Он сохраняет только цветовые индексы, а не фактические значения RGB. Они позволяют настраивать цвета в палитре, но Я не знаю, как их программно изменить .

Edit:
Я не использовал Office XML документы, но это может помочь (indexedColors тег для определения палитры):
http://openxmldeveloper.org/forums/thread/309.aspx

Также есть свойство Workbook.Colors для изменения палитры из VBA ,

1

Дэвид прав, что Excel 2003 и предыдущие версии Excel ограничены 56 цветовой палитрой.

Excel 2007 добавлена ​​поддержка 24-битных цветов, а также цветов темы. Excel 2007 может писать книги xls, которые содержат эту дополнительную информацию о цвете, и которую Excel 2003 может читать, но Excel 2003 по-прежнему будет ограничен цветовой палитрой 56. Excel 2007 может загружать эти книги и отображать точные цвета.

поддерживает новые 24-битные цвета и цвета темы, а также индексированные цвета в палитре, как это делает Excel 2007. Вы можете использовать SpreadsheetGear для создания книги с 24-битными цветами, которая будет отображаться правильно в Excel 2007 или изменить палитру, и они будут отображаться правильно в Excel 2007 и Excel 2003. Ниже приведен пример обоих.

Вы можете скачать бесплатную пробную версию here и попробовать сами.

Отказ от ответственности: У меня есть SpreadsheetGear ООО

Вот пример кода:

  // Create a new empty workbook with one worksheet. 
      IWorkbook workbook = Factory.GetWorkbook(); 
      // Get the worksheet and change it's name to "Person". 
      IWorksheet worksheet = workbook.Worksheets[0]; 
      worksheet.Name = "Colors"; 
      // Put "Hello World!" into A1. 
      IRange a1 = worksheet.Cells["A1"]; 
      a1.Value = "Hello World!"; 
      a1.Font.Color = System.Drawing.Color.FromArgb(0x8C, 0xBE, 0x50); 
      // Save the workbook as xls (Excel 97-2003/Biff8) with default palette. 
      // 
      // This workbook will display the exact color in Excel 2007 and 
      // SpreadsheetGear 2009, but will only display the closest available 
      // palette indexed color in Excel 2003. 
      workbook.SaveAs(@"C:\tmp\GreenDefaultPalette.xls", FileFormat.Excel8); 
      // Save as xlsx/Open XML which will also display the exact color. 
      workbook.SaveAs(@"C:\tmp\GreenDefaultPalette.xlsx", FileFormat.OpenXMLWorkbook); 
      // Now, modify the palette and save. This workbook will display the exact 
      // color in Excel 2003 as well as in SpreadsheetGear 2009 and Excel 2007. 
      // 
      // Note that modifying the palette will change the color of any cells which 
      // already reference this palette indexed color - so be careful if you are 
      // modifying pre-existing workbooks. 
      workbook.Colors[0] = a1.Font.Color; 
      workbook.SaveAs(@"C:\tmp\GreenModifiedPalette.xls", FileFormat.Excel8); 

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

  • Нет связанных вопросов^_^