将html字符串写入csv文件

时间:2016-06-21 12:13:42

标签: c# csv umbraco

是否可以将html字符串输出到csv。

尝试将数据从cms导出到csv和Excel。每个html都可以包含逗号和任何内容。

EG. <p class="myclass">This is an example, of the string</p>

导入在Excel中被破坏,错误的数据显示在错误的列中,而前几行是正确的。

我想实现这种格式

col1,col2,col3
"1","<p class="myclass">This is an example, of the string</p>","and more html here"

我尝试过这种事情 - 我在cms中迭代一个内容项,并将每个属性输出为用引号括起来并用逗号分隔的单独的csv数据值。

foreach (var prop in offer.Properties) //.Where(x=>x.Alias != "Id"))
{

    var @propValue = prop.Value.ToString().Replace("\"", "'");

    // Append comma except last
    sb.Append(prop != offer.Properties.Last()
        ? "\"" + propValue + "\","
        : "\"" + propValue + "\"");
}
sb.Append(Environment.NewLine);

更新 事实证明,这项任务充满了困难。最初的目标是将一组节点及其属性从Umbraco CMS快速导出到Excel文件。我了解到csv可能不是这种数据的正确格式,它基于存储在xml中的数据,包括编码的html片段。

在我们的例子中,实现我们想要的最好方法是将导出的数据输出为Excel理解的html表,并维护编辑器友好格式而不是编码的html片段。

2 个答案:

答案 0 :(得分:0)

编码/解码csv时,我宁愿选择插件/库,还有一些令人讨厌的用例,当我自己尝试这样做时,我已经咬了自己(如何注意小数,取决于区域设置,不均匀数据,转义字符等。)我使用CsVHelper的调整版本,但你可以在网上找到很多不同的版本。

关于您的更新。我建议的不是直接用html填充你的csv,只需用实际值填充它。将查看逻辑远离模型逻辑。我们来做一个简单的例子。

<table>
  <tr>
    <th>A</th>
    <th>B</th> 
    <th>C</th>
  </tr>
  <tr>
    <td>1</td>
    <td>2</td> 
    <td>3</td>
  </tr>
</table>

如果我以这种格式提供了数据:

A B C
1 2 3

甚至采用以下格式:

A,B,C
1,2,3

您可以非常轻松地从此数据中重新创建html表格;或创建图表;或文字文件;或者您希望向用户展示模型的任何方式。

反过来,使用表格中的一组数据

 <th>A</th>,    <th>B</th> ,    <th>C</th>
 <td>1</td>,    <td>2</td> ,    <td>3</td>

每次您在除html之外的其他上下文中使用数据时,都会强制您进行解析。将视图和模型放在不同的位置将使您的工作更轻松。

答案 1 :(得分:-1)

你可以HtmlEncode将摆脱你的报价的字符串&#34;。

string data = "<p class=\"myclass\">This is an example, of the string</p>";
Server.HtmlEncode(data);

https://msdn.microsoft.com/en-us/library/w3te6wfz(v=vs.110).aspx

编辑:

"<a href=&quote;http://www.example.com&quote;>link</a>","<b>more html</b>"