导出到excel之前的C#html解码

时间:2016-02-04 00:40:50

标签: c# excel encoding

我的应用程序中出现了一些文本问题,事情是在用户添加带格式的文本后,我在数据库中保存了这种格式(HTML)供以后使用。因此,一旦我将其显示给用户,我仍然可以保留格式

文字示例:

bla<br>bla<br>bla bla<br>

为了显示我的控件,这是有效的,我正在使用:

Context.Server.HtmlDecode(e.Row.Cells[i].Text);
Context.Server.HtmlEncode(e.Row.Cells[i].Text);

但问题出现了,当我想将相同的文本导出到Excel文件...

foreach (DataRow row in dr)
{
   for (col = 0; col < dtMainSQLData.Columns.Count; col++)
   {
      rowData[rowCnt, col] = HttpUtility.HtmlEncode(row[col].ToString());
   }
   rowCnt++;
}

oSheet.get_Range("A2", lastColumn + (rowCnt + 1).ToString()).Value2 = rowData;

一旦我打开excel文件......那个文字就像这样出现了

bla&lt;br&gt;bla&lt;br&gt;bla bla&lt;br&gt;

有没有人知道某种方法将此文本导出到excel文件,但是要保留文本的格式?

谢谢

2 个答案:

答案 0 :(得分:0)

这可能不是最佳解决方案,但您可以替换字符串文本:

foreach (DataRow row in dr)
{
   for (col = 0; col < dtMainSQLData.Columns.Count; col++)
   {
      string outputData = row[col].ToString().Replace("&lt;", "<");
      outputData = outputData.Replace("&gt;", ">");
      rowData[rowCnt, col] = outputData;
   }
   rowCnt++;
}

答案 1 :(得分:0)

安装HTML Agility Pack

然后你可以创建一个这样的方法来获取文本值。

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml("bla<br>bla<br>bla bla<br>");
    var buffer = new StringBuilder();
    foreach (var descendant in doc.DocumentNode.Descendants())
    {
        buffer.Append(descendant.InnerHtml);
    }
    Console.WriteLine(buffer);