如何利用 StreamWriter 写入 csv 文件
本文关键字:csv 文件 写入 StreamWriter 何利用 | 更新日期: 2023-09-27 17:56:59
这就是我正在使用的内容。 我正在尝试获取一个 XML 文件,从属性中提取信息,将它们附加到一起,然后将其写入 CSV 文件。 我对编程还比较陌生,另一个程序员今天不在办公室,所以我真的可以使用一些帮助。
我的第一个问题,关于StringBuilder。 我是否需要在 StringBuilder 的末尾有一个 AppendLine,以便 foreach 循环的每个字符串输出都在新行上? 我需要在foreach循环中执行此操作吗?
我的第二个问题是关于实际将我的字符串写入 CSV 文件。 会不会像?
swOutputFile.WriteLine(strAppendedJobData)
我认为这也会进入foreach循环,但我不太确定。
感谢您的帮助,我希望我以易于理解的方式措辞了我的问题。
//Create a stream writer to write the data from returned XML job ticket to a new CSV
StreamWriter swOutputFile;
string strComma = ",";
swOutputFile = new StreamWriter(new FileStream("C:''Dev''AppendedJobData.csv", FileMode.Create, FileAccess.Write, FileShare.Read));
//Get nodes from returned XML ticket
XmlNodeList xmlJobs = xdResults.SelectNodes("/Updates/Jobs/Job");
//Pull out data from XML attributes
foreach (XmlElement xeJobUpdate in xmlJobs)
{
//Break down the job data
string strProjectID = xeJobUpdate.GetAttribute("SharpOwlProjectID");
string strJobNumber = xeJobUpdate.GetAttribute("JobNumber");
string strClientCode = xeJobUpdate.GetAttribute("SharpOwlClientCode");
string strClient = xeJobUpdate.GetAttribute("Client");
string strVCAOffice = xeJobUpdate.GetAttribute("VCAOffice");
string strLoadStatus = xeJobUpdate.GetAttribute("LoadStatus");
//Build the string to be added to the new CSV file
StringBuilder sbConcatJob = new StringBuilder();
sbConcatJob.Append(strProjectID).Append(strComma).Append(strJobNumber)
.Append(strComma).Append(strClientCode).Append(strComma).Append(strClient).Append(strComma)
.Append(strVCAOffice).Append(strComma).Append(strLoadStatus).Append(strComma);
string strAppendedJobData = sbConcatJob.ToString();
做得更优雅一点,你可以做这样的事情:
using(StreamWriter swOutputFile = new StreamWriter(new FileStream("C:''Dev''AppendedJobData.csv", FileMode.Create, FileAccess.Write, FileShare.Read)))
{
//Get nodes from returned XML ticket
XmlNodeList xmlJobs = xdResults.SelectNodes("/Updates/Jobs/Job");
//Pull out data from XML attributes
foreach (XmlElement xeJobUpdate in xmlJobs)
{
List<String> lineItems = new List<String>();
lineItems.add(xeJobUpdate.GetAttribute("SharpOwlProjectID"));
//add all the other items
swOutputFile.WriteLine(String.Join(',', myLine.ToArray()));
}
//after the loop you close the writer
}
//all the work is done much easier
我的第一个问题,关于 字符串生成器。我需要有一个 附录行在我的末尾 字符串生成器,以便每个字符串 Foreach 循环的输出位于 新行?我需要这样做吗 在 foreach 循环内?
由于您似乎没有尝试过,我唯一的建议就是尝试一下。 这是你学习的唯一途径。
swOutputFile.WriteLine(strAppendedJobData)
这会将整行文本写入文件。
你在这里有两个选择:
如果在 foreach 循环中调用 sbConcatJob.AppendLine()
,则可以在一个字符串生成器中构建文件的内容,然后在 foreach 循环外部调用swOutputFile.Write(sbConcatJob.ToString())
来写入文件。
如果保持代码原样,则可以在 foreach 循环中添加sw.OutputFile.WriteLine(sbConcatJob.ToString())
并一次写入一行文件。