Comment puis-je utiliser StreamWriter pour écrire dans un fichier csv?
Donc voici ce que je suis en train de travailler avec. Je suis en train de prendre un fichier XML, tirez les informations sur les attributs, ajoutez-les ensemble, et l'écrire dans un fichier CSV. Je suis encore relativement nouveau pour la programmation, et de l'autre programmeur est pas au bureau aujourd'hui, donc j'ai vraiment besoin d'aide.
Ma première question, en ce qui concerne le StringBuilder. Dois-je avoir un AppendLine à la fin de mon StringBuilder, de sorte que chaque chaîne de sortie de la boucle foreach est sur une nouvelle ligne? Et aurais-je besoin de le faire à l'intérieur de la boucle foreach?
Ma deuxième question concerne en fait l'écriture de mon string dans le fichier CSV. Serait-il ressembler?
swOutputFile.WriteLine(strAppendedJobData)
Et je pense que cela pourrait aussi aller à l'intérieur de la boucle foreach, mais je ne suis pas trop sûr.
Merci pour l'aide, j'espère que j'ai formulé ma question de manière un peu facile de comprendre de manière.
//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();
- La version de .NET vous aide? Aussi, quel problème rencontrez-vous?
Vous devez vous connecter pour publier un commentaire.
Vraiment vous avez deux options ici:
Si vous appelez
sbConcatJob.AppendLine()
à l'intérieur de la boucle foreach, vous pouvez construire le contenu du fichier dans un générateur de chaîne puis appelerswOutputFile.Write(sbConcatJob.ToString())
à l'extérieur de la boucle foreach pour écrire le fichier.Si vous conservez votre code comme il est maintenant, vous pouvez ajouter
sw.OutputFile.WriteLine(sbConcatJob.ToString())
à l'intérieur de la boucle foreach et écrire le fichier ligne par ligne.si vous voulez faire un peu plus élégante que vous pourriez faire quelque chose comme ça:
Close
est garanti d'être appelé.Mon seul conseil, car il semble que vous n'avez pas tenté ce serait de l'essayer. C'est la seule façon que vous allez apprendre.
Ce serait d'écrire une ligne de texte dans un fichier.