我正在为我自己的个人工具包lib添加一个函数来进行简单的CSV到HTML表转换.
我想在C#中使用尽可能最小的代码来完成此操作,并且它需要能够处理超过~500mb的CSV文件.
到目前为止,我的两个竞争者是
通过分隔符将csv拆分为数组并构建HTML输出
使用表格标记的搜索替换分隔符
假设已经处理了文件/读取/磁盘操作...即,我将包含所述CSV内容的字符串传递给此函数.输出将由直接简单的HTML样式标记组成,是的,数据可能在其中有杂散逗号和中断.
更新: 有些人问.如果有帮助,100%我处理的CSV直接来自excel.
a1,b1,c1\r\n a2,b2,c2\r\n
将所有行读入内存
var lines =File.ReadAllLines(args[0]);
using (var outfs = File.AppendText(args[1]))
{
outfs.Write("<html><body><table>");
foreach (var line in lines)
outfs.Write("<tr><td>" + string.Join("</td><td>", line.Split(',')) + "</td></tr>");
outfs.Write("</table></body></html>");
}
Run Code Online (Sandbox Code Playgroud)
或一次读一行
using (var inFs = File.OpenText(args[0]))
using (var outfs = File.AppendText(args[1]))
{
outfs.Write("<html><body><table>");
while (!inFs.EndOfStream )
outfs.Write("<tr><td>" + string.Join("</td><td>", inFs.ReadLine().Split(',')) + "</td></tr>");
outfs.Write("</table></body></html>");
}
Run Code Online (Sandbox Code Playgroud)
... @Jimmy ...我使用LINQ创建了一个扩展版本.这是亮点...(线读的懒惰eval)
using (var lp = args[0].Load())
lp.Select(l => "<tr><td>" + string.Join("</td><td>", l.Split(',')) + "</td></tr>")
.Write("<html><body><table>", "</table></body></html>", args[1]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6564 次 |
| 最近记录: |