Электронные таблицы Excel с XML - PullRequest
3 голосов
/ 04 марта 2010

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

Пока все работает как надо, но у меня проблемы с цветами.

Я создал один стиль, такой как:

<Style ss:ID="s64" ss:Parent="s25">
      <Font ss:FontName="Tahoma" x:Family="Swiss" ss:Size="14" ss:Color="#4579B9" ss:Bold="1"/>
      <Interior/>
</Style>

Цвета, которые он должен использовать, должны выглядеть примерно так:

альтернативный текст http://img535.imageshack.us/img535/431/righty.jpg

Однако, цвет, который он использует тот, что внизу.

Когда я генерирую отчет, он генерируется с цветным кодом: # 4579B9, и это то, что я хочу, но когда я его открываю, он отображает цвет как цвет снизу изображения.

Если я затем сохраню документ, он автоматически изменит цвет на # 666699, что в точности соответствует цвету внизу (неправильный цвет).

Это, однако, происходит только с цветами шрифта, так как если я изменю цвет фона любой ячейки на # 4579B9, он будет работать нормально.

Я думаю, что это как-то связано с тем, что выбранный цвет является частью "тематических цветов", а не "стандартных цветов".

Есть ли у кого-нибудь здесь опыт создания отчетов такого типа и правильного применения к ним стилей? Или я что-то упустил?

1 Ответ

4 голосов
/ 11 марта 2010

Я полагаю, что вы используете Excel 2007 из-за цветов, которые вы используете, и вы упомянули тему. Следующая информация о цвете относится к Excel 2003, который является единственной версией, в которой у меня есть опыт использования SpreadsheetXML (XMLSS).

Excel 2003 поддерживает только ограниченное количество цветов. Поскольку указанный цвет не является частью цветовой палитры, используется наиболее подходящий цвет. Вам нужно указать другую цветовую палитру или сопоставить цвет с одним из цветов по умолчанию.

Ниже приведен пример определения цветовой палитры для рабочей книги. Я уменьшил цвет в Index # 1, обычно белом, до более светлого оттенка белого (255, 253, 253).

 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <RelyOnVML/>
  <AllowPNG/>
  <Colors>
   <Color>
    <Index>1</Index>
    <RGB>#FFFDFD</RGB>
   </Color>
  </Colors>
 </OfficeDocumentSettings>
...