【发布时间】:2016-10-22 23:36:24
【问题描述】:
是否可以将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 sn-ps。
在我们的例子中,实现我们想要的最佳方式是将导出的数据输出为 Excel 可以理解的 html 表格,该表格保持编辑器友好的格式,而不是编码的 html sn-ps。
【问题讨论】:
-
你想要实现什么?你想把
<p class="myclass">This is an example, of the string</p>解析成什么?给我们一些示例 od 输出! -
刚刚添加了所需格式的更多说明
-
为什么不用 EPPlus 创建一个真正的 Excel 文件?生成工作表可以像
ws.LoadFromDataTable(someTable);或ws.LoadFromCollection(someList);一样简单。除此之外,尝试将 HTML 放入 CSV 只是自找麻烦。您不能简单地替换或编码所有引号,因为 HTML sn-p 可能已经包含编码字符串。您可以尝试使用一些真正意想不到的字符作为列和行分隔符,例如 ¤ 和 ¶ -
@wingyip 如果对数据没有严格限制,例如没有换行符、没有转义引号、属性只有单引号等,您所问的可能是不切实际的。真正的 问题是什么你想解决?为什么您认为以 CSV 格式导出 HTML 是解决方案?
-
感谢您让我想到替代方案@PanagiotisKanavos