C# 简单csv逗号分隔html表格生成器
我知道以前有人问过这个问题,但我对答案不太满意(考虑到它没有解释发生了什么) 我的具体问题是:如何打开逗号分隔的csv/文本文件,并使用C#将其放入HTML表中 我知道如何在PHP中实现这一点,但我刚刚开始学习ASP.Net/C#,如果有人有一些免费的C#资源和/或能够为我提供一段代码,并解释正在发生的事情,我将不胜感激 我有这段代码,但我不确定如何使用它,因为A)我不知道C#数组如何工作,B)我不确定如何在ASP.Net C#中打开文件:C# 简单csv逗号分隔html表格生成器,c#,csv,html-table,C#,Csv,Html Table,我知道以前有人问过这个问题,但我对答案不太满意(考虑到它没有解释发生了什么) 我的具体问题是:如何打开逗号分隔的csv/文本文件,并使用C#将其放入HTML表中 我知道如何在PHP中实现这一点,但我刚刚开始学习ASP.Net/C#,如果有人有一些免费的C#资源和/或能够为我提供一段代码,并解释正在发生的事情,我将不胜感激 我有这段代码,但我不确定如何使用它,因为A)我不知道C#数组如何工作,B)我不确定如何在ASP.Net C#中打开文件: var lines=File.ReadAllLines
var lines=File.ReadAllLines(args[0]);
使用(var outps=File.AppendText(args[1]))
{
输出。写(“”);
foreach(行中的var行)
outps.Write(“+string.Join(”,line.Split(“,”)+”);
输出。写(“”);
}
很抱歉,我在这里毫无经验。希望这能帮助您找到正确的方向:
line = "<table>" + line;
foreach (string line in lines)
{
line = "<tr><td>" + line;
line.Replace(",", "</td><td>");
line += "</td></tr>";
}
Response.Write(line + "</table>");
line=”“+行;
foreach(行中的字符串行)
{
line=”“+行;
行。替换(“,”,”);
行+=“”;
}
响应。写入(行+“”);
祝你学习顺利 您发布的代码示例完全符合您的要求:
var lines =File.ReadAllLines(args[0]);
这将打开args[0]中指定的文件,并将所有行读入一个字符串数组,每个元素一个层。看
创建StreamWriter以将文本附加到现有文件(如果不存在,则创建该文件)。文件名(可能还有路径)在args[1]中。using
语句将StreamWriter放入所谓的using块中,以确保在using块离开后正确处理流。有关更多信息,请参阅
outfs.Write("<html><body><table>");
此命令启动一个循环,遍历字符串数组行中的所有元素,从第一个(元素0)索引开始。如需更多信息,请参阅
outfs.Write("<tr><td>" + string.Join("</td><td>", line.Split(',')) + "</td></tr>");
这会将HTML的结尾写入缓冲区,然后刷新缓冲区并将其写入指定的文本文件
有几件事需要注意args[0]
和args[1]
用于保存命令行参数(即MakeMyTable.exe infle.txt OutFile.txt),这些参数(以我的经验)不适用于ASP.NET应用程序。您需要对必要的文件(和路径)进行编码,或者允许用户指定输入文件和/或输出文件。ASP.NET应用程序需要在具有访问这些文件权限的帐户下运行
如果您在CSV文件中引用了值,则需要处理这些值(例如,在处理货币金额时,这非常常见),因为在,
上拆分可能会导致不正确的拆分。我建议看一下,因为它可以很容易地处理引用字段
除非您确定文件中的每一行都有相同数量的字段,否则您的表中可能存在格式错误的HTML,并且无法保证它将如何呈现
此外,最好测试您正在打开的文件是否存在。可能还有更多,但这些是基础(可能已经超出了堆栈溢出的范围).数组:阅读文本文件:您的具体问题是什么?我更新了我的原始问题以回答您的问题:我的具体问题是:如何打开逗号分隔的csv/文本文件,并使用C#将其放在HTML表中?我对您的问题有点困惑-您发布的代码就可以了正是您想要的-打开一个CSV文件,根据输入文件中的数据写出一个HTML表。似乎你真正想问的是“这是如何工作的?”你缺少了一个开口
。除了缺少开口
,你还做了大量的字符串缩聚,这可能会很昂贵。最好使用StringBuilder.@BeemerGuy.net对,抱歉。我写这篇文章时,门铃响了,所以我赶时间。现在修好了。蒂姆:没错,StringBuilder会是一个更好的选择。我只是想给OP指出正确的方向-希望他们比他/她发布的方法更了解这个方法。@Event\u Horizon因此String+String
实际上会在内存中生成一个新字符串,因为字符串无法修改。StringBuilder解决了这个问题。例如,您可以使用StringBuilder sb=newstringbuilder(line);sb.插入(0,“”);某人加上(“”)代码>以修改行而不是上面显示的方式。更多信息请参见此处:在我最初的帖子中,我并不想显得如此愚蠢,但我确实了解了打开的文件行var lines=file.ReadAllLines(args[0])的情况
但是由于数组在那里并且没有指定代码中的实际文件位置而感到困惑。另外,我不需要处理引号,在我的csv文件中永远不会有引号,很抱歉没有说清楚。最后,感谢您为我澄清问题,我不理解这一点的整个问题似乎都源于args[0]
array。
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>");
}