【问题标题】:show multi-line text value in cells of an XML excel document made with C# XmlWriter在使用 C# XmlWriter 制作的 XML excel 文档的单元格中显示多行文本值
【发布时间】:2012-05-12 00:14:09
【问题描述】:

情况:我正在创建一个 C# .Net 4.0 Winform 以使用用户选择的过滤器从 Oracle DB 收集数据表,并将它们放入 Gridview 预览中进行检查。一旦他们根据自己的喜好过滤了数据,他们就会单击导出按钮,该按钮将数据表转换为 XML 文档,双击该文档会在 Excel 中打开。在 XML excel 文件中,每条记录如下所示:

  <ss:Row>
    <ss:Cell ss:StyleID="General">
      <ss:Data ss:Type="String">110002</ss:Data>
    </ss:Cell>
    <ss:Cell ss:StyleID="General">
      <ss:Data ss:Type="String">GALV.047M X 3 G90 A653 PASSDRY SQ GR33</ss:Data>
    </ss:Cell>
    <ss:Cell ss:StyleID="General">
      <ss:Data ss:Type="String">.047 MIN X 3 X COIL
!GALV G90 ASTM A 653 SQ GR33 PASS DRY*

20" ID
5 TON MAX LIFT
SKID EYE TO THE SKY
3" X 3" SPACER IN BETWEEN EACH BUNDLE
SUPPLY TEST REPORTS CHEMICAL</ss:Data>
    </ss:Cell>
  </ss:Row>

在 excel 中显示的记录类似于文件是 CVS 时的显示方式,这是一个完全未格式化的工作表,所有文本都在一行上。显然,在 XML 文件中保留了换行符,但 Excel 表是供用户编辑数据的,因此我需要显示我收到的文本(即,如果是这种情况,则显示多行)。

问题:如果 XML 文件中的数据是这样格式化的,我如何格式化导出的 XML 文件以在多行上显示其单元格内容(并可能增加单元格高度以匹配)?

【问题讨论】:

  • 在 C# 中使用 writer.WriteCData() 而不是 writer.WriteValue() 成功了!

标签: c# xml excel export-to-excel multiline


【解决方案1】:

如果您创建一个包含多行内容的简单 Excel 文件并保存为 XML,您可以在输出中看到:

在标签中

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

单元格 XML:

<Cell ss:StyleID="s62"> <Data ss:Type="String">First Line&#10;Second Line&#10;Last Line</Data> </Cell>

【讨论】:

  • 所以在我的 c# 程序中我插入我的样式,如下所示:_writer.WriteStartElement("Styles", "urn:schemas-microsoft-com:office:spreadsheet"); WriteExcelStyleElement(CellStyle.General); WriteExcelStyleElement(CellStyle.Number, "General Number"); WriteExcelStyleElement(CellStyle.DateTime, "一般日期"); WriteExcelStyleElement(CellStyle.Currency, "货币"); WriteExcelStyleElement(CellStyle.ShortDate, "短日期"); _writer.WriteEndElement();我将如何更改它以添加您提到的样式?
  • 另外,当我向 XML 单元格添加行时,我有一个类似的字符串: Firstline SecondLine lastLine 如何添加 到那个而不是\ n?我有以下行: ToValid = ToValid.Replace("\n", "\n \n");但是生成的 XML 中的 & 符号会变成 &
  • 请通过更新您的问题发布代码:它比 cmets 更容易阅读。
  • 我发现我必须使用 这是一个回车“\r”而不是 ,这是一个新行“\n”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2019-02-24
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多