是否可以将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片段。
答案 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="e;http://www.example.com"e;>link</a>","<b>more html</b>"