Sigmond Gatt Ответов: 1

Как добавить данные в csv-файл на языке C#


я получил этот код для вставки текста в csv-файл:

try
               {

                   for (int i = 0; i < this.TestCases; i++)
                   {


                       textClientNumber[i] = readClientNumber.ReadLine();
                       textCardNumber[i] = readCardNumber.ReadLine();

                       export.AddRow();
                       export["TransactionDate"]= DateTime.Now.ToString("yyyyMMdd");
                       export["Card Type"] = "MC";
                       export["Original Payment Reference"] = " ";
                       export["Retreival Reference"] = " ";
                       export["Credit/Debit Card Indicator"] = " ";
                       export["Institution_number"] = this.Institution_number;
                       export["Refund"] = cmbRefund.SelectedItem.ToString();
                       export["Card Number"] = textCardNumber[i].ToString();
                       export["Capture Method"] = cmbCaptureMethod.SelectedValue.ToString();
                       export["ECI Indicator / Rate Program"] = cmbEciIndicator.SelectedItem.ToString();
                       export["Client Number"] = textClientNumber[i].ToString();
                       export["Processor ID"] = " ";
                       export["Currency"] = cmbCurrency.SelectedValue.ToString();
                       int randnum1 = rand.Next(1, 999999);
                       string randnumstring = opClass.AmountToExport(randnum1);
                       export["Amount"] =randnumstring ;
                   }


                   export.ExportToFile("C:\\temp\\MCB2" + randnum + ".csv");
                   this.Excelfilename = "MCB2" + randnum;
                   MessageBox.Show("Csv File created, You can find the file in C:\\temp\\" + this.Excelfilename);

               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.ToString());
               }



Может ли кто-нибудь сказать мне, как я могу начать добавлять строки из последней использованной строки или, может быть, другой метод, как это сделать ?

Что я уже пробовал:

Я попробовал этот код, чтобы добавить строки в существующий файл. csv:

  try
                {
                    StreamReader reader = File.OpenText(this.Excelfilename + ".csv");
                    
                }
                catch (Exception Ex)
                {
                    Console.WriteLine(Ex.ToString());


                var firstLetterCharacters = this.Excelfilename.TakeWhile(Char.IsLetter);
                string filename = new string(firstLetterCharacters.ToArray());
                }




if (filename == "MCB")
            {
                try
                {
                        

                        for (int i = 0; i < this.TestCases; i++)
                        {

                            textClientNumber[i] = readClientNumber.ReadLine();
                            textCardNumber[i] = readCardNumber.ReadLine();

                            export.AddRow();

                            export["TransactionDate"] = DateTime.Now.ToString("yyyyMMdd");
                            export["Card Type"] = "MC";
                            export["Original Payment Reference"] = " ";
                            export["Retreival Reference"] = " ";
                            export["Credit/Debit Card Indicator"] = " ";
                            export["Institution_number"] = this.Institution_number;
                            export["Refund"] = cmbRefund.SelectedItem.ToString();
                            export["Card Number"] = textCardNumber[i].ToString();
                            export["Capture Method"] = cmbCaptureMethod.SelectedValue.ToString();
                            export["ECI Indicator / Rate Program"] = cmbEciIndicator.SelectedItem.ToString();
                            export["Client Number"] = textClientNumber[i].ToString();
                            export["Processor ID"] = " ";
                            export["Currency"] = cmbCurrency.SelectedValue.ToString();
                            int randnum1 = rand.Next(1, 999999);
                            string randnumstring = opClass.AmountToExport(randnum1);
                            export["Amount"] = randnumstring;

                            

                        }
                    if (File.Exists("C:\\temp\\" + this.Excelfilename + ".csv"))
                    {
                        File.Delete(this.Excelfilename);
                        export.ExportToFile("C:\\temp\\" + this.Excelfilename + ".csv");
                    }



все работает идеально, старые данные будут потеряны и заменены новыми данными.

1 Ответов

Рейтинг:
1

OriginalGriff

У вас есть два метода: вы можете добавить текст, используя Файл.Метод AppendText (Строка) (System.IO)[^] или с помощью потока с опцией добавления:

using (FileStream fs = new FileStream(fileName,FileMode.Append, FileAccess.Write))
    {
    using (StreamWriter sw = new StreamWriter(fs))
        {
        sw.WriteLine(myNewCSVLine);
        }
    }

Единственный другой способ-прочитать весь файл (используя коллекцию строк или CSVReader), добавить ваши данные и записать их обратно в новый файл.


Sigmond Gatt

Привет, OriginalGriff, Спасибо за помощь.

Один маленький вопрос, как я могу сохранить "MyNewCsvLine", потому что у меня есть более 1 записи в этой строке .

С уважением,
Сигмонд

OriginalGriff

Разделите их с помощью "\n " или напишите каждую строку отдельно в цикле, если они у вас есть в коллекции.

Или есть струна.Присоединяйтесь... куча способов, в зависимости от того, как у вас хранится информация - чего я не знаю!

Sigmond Gatt

Хорошо спасибо :)

OriginalGriff

Пожалуйста!