XML-ленты в Excel в полях

Я пытаюсь получить следующую строку для вывода в ячейку в Excel, используя возможности XML 2003 "Cheese\nBread", и в данный момент она игнорирует разрыв строки.

Если я создаю файл с желаемым эффектом, я получаю следующий вывод

<Cell ss:StyleID="s62"><Data ss:Type="String">Cheese&#10;Monkey</Data></Cell>

Итак, я пытаюсь сделать...

text.Replace('\n',(char)10);

или text.Replace("\n"," ");

Безрезультатно, первое не делает ничего полезного, а во втором XmlWriter просто избегает его с &, что действительно полезно.

Любые идеи, может быть, настройка.NET XmlWriter?

2 ответа

Решение

Попробуйте установить xml:space="preserve" на Data элемент:

<Cell ss:StyleID="s62"><Data ss:Type="String" xml:space="preserve">Cheese
Monkey</Data></Cell>

Мне пришлось добавить следующее в мое определение XML (в элементе "Рабочая книга"):

<Styles>
  <Style ss:ID="sMultiLine">
    <Alignment ss:Vertical="Bottom" ss:WrapText="1"/>
  </Style>
</Styles>

А затем, в элементе "Cell", добавьте соответствующий соответствующий стиль:

<Cell ss:StyleID="sMultiLine">

На самом деле я добавил незначительную корректировку XSLT, чтобы это значение отображалось только в том случае, если в содержимом обнаружены новые строки:

<xsl:if test="contains(.,'#10;')">
      <xsl:attribute name="ss:StyleID">sMultiLine</xsl:attribute>
</xsl:if>
Другие вопросы по тегам