【问题标题】:How to add Column and Row header while appending data into CSV file using C#如何在使用 C# 将数据附加到 CSV 文件时添加列和行标题
【发布时间】:2019-03-11 10:48:55
【问题描述】:

我正在尝试使用 C# 代码将数据插入 CSV 文件。使用我在下面粘贴的代码,我可以将列标题添加到 CSV 文件中。但我需要在 CSV 文件中添加列标题和行标题以获得更好的可读性。请帮我解决这个问题。

C# 代码

string newFileName = "C:\\AlertReportTill_" + DateTime.Now.ToString("yyyyMMdd_hhmmss") + ".csv";
string AlertDetails = fromDate + "," + toDate + "," + Column1's Value + "," + Column2's Value + ","
        + Column3's Value + "," + Environment.NewLine;

if (!System.IO.File.Exists(newFileName))
        {
            string AlertHeader = "Weekly Report" + Environment.NewLine + "From Date" + "," + "To Date" + "," +
                                 "ColumnHeader1" + "," + "ColumnHeader2" + "," +
                                 "ColumnHeader3" + "," + Environment.NewLine;

            System.IO.File.WriteAllText(newFileName, AlertHeader);
        } //End of If Statement

System.IO.File.AppendAllText(newFileName, AlertDetails);

为了更清楚起见,我在下面添加了一张图片,以帮助您理解我的问题。如果有人可以为我解决这个问题,那将非常有帮助。提前致谢。

【问题讨论】:

  • 您需要添加代码。
  • 行标题,您只需在每行的开头添加带有空格的新列:string row = reader.ReadLine(); row = "新数据" + row;
  • @mortb:我已经在上面添加了代码,请看一下!我还需要在我的 CSV 文件中添加三个行标题。
  • @jdweng:我无法理解您的解释,请您详细说明一下吗?
  • Deepak619:行标题是什么意思?

标签: c# export-to-csv


【解决方案1】:

尝试以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication104
{
    class Program
    {
        static void Main(string[] args)
        {
            string oldFileName = "C:\\AlertReportTill.csv";
            string newFileName = string.Format("C:\\AlertReportTill_{0}.csv", DateTime.Now.ToString("yyyyMMdd_hhmmss"));

            StreamReader reader = new StreamReader(oldFileName);
            if (!System.IO.File.Exists(newFileName))
            {
                StreamWriter writer = new StreamWriter(newFileName);
                writer.WriteLine("Weekly Report");


                string AlertHeader = string.Join(",", new string[] 
                   {"",
                    "ColumnHeader1", "ColumnHeader2", "ColumnHeader3"
                   });
                writer.WriteLine(AlertHeader);

                string line = "";
                int RowCount = 0;
                while ((line = reader.ReadLine()) != null)
                {
                    List<string> AlertDetails = line.Split(new char[] { ',' }).ToList();
                    AlertDetails.Insert(0, "RowHeader" + ++RowCount);

                    writer.WriteLine(string.Join(",", AlertDetails));
                }

                reader.Close();
                writer.Flush();
                writer.Close();

            } //End of If Statement

        }
    }
}

【讨论】:

  • 对不起@jdweng!恐怕这没有帮助!我需要像 JPEG 一样添加行标题!感谢您的努力。
  • 我更新了代码。我最初使用您的示例代码,您在其中向每一行添加了 from 和 to 数据。新代码现在与您的示例输出相匹配。确保删除旧文件,因为如果新文件与旧文件匹配,则不会写入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 2015-12-02
相关资源
最近更新 更多