Цвет текста в тексте ML (цвет)

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

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

 <Стиль ss: ID = "GreenText">
   <Font ss: FontName = "Arial" ss: Размер = "9" ss: Цвет = "# 8CBE50" />
 </ Style>

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

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

Благодаря!

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

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

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

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

Отказ от ответственности: у меня есть ООО «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); 

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

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

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

  • Преобразование Open XML в SpreadsheetML в Open XML SDK 2.7 C #
  • Стиль для обернутого текста с помощью таблицы
  • Parsing SpreadsheetML Использование Perl
  • Как вставить гиперссылку в excel с помощью открытого XML в c #
  • Преобразование Excel-таблицы Excel в xlsx
  • В чем разница между <ct = "str"> и <c> <is> в Office Open XML?
  • С C # можно ли поместить объект в буфер обмена, который будет вставляться в excel как данные и формулы?
  • Создание API Excel
  • Как развернуть разметку spreadsheetML для регулярной разметки матрицы с использованием XSLT 1.0
  • Экспорт уравнений AsciiMathML в формат Excel
  • Существующий API для чтения дат из файлов SpreadsheetML?
  • Interesting Posts
    Давайте будем гением компьютера.