0

我有 22 个 .csv 文件要读取并写入 1 个 .csv 文件 这是我的内部课程

 internal class Record
{
    [Name("RptDt")]
    public string Date { get; set; }
    [Name("Entity")]
    public string Entity { get; set; }
    [Name("ProdFamily")]
    public string ProdFamily { get; set; }
    [Name("ProdGroup")]
    public string ProdGroup { get; set; }
    [Name("ProdType1")]
    public string ProdType1 { get; set; }
    [Name("ProdTypo")]
    public string ProdTypo { get; set; }
    [Name("ProdType")]
    public string Buy { get; set; }
    [Name("Principal")]
    public string Principal { get; set; }
}

这是读写代码

string[] files = Directory.GetFiles(fbd.SelectedPath, "*.csv", SearchOption.AllDirectories);
string numberFile = files.Length.ToString();                                        
            using (var writer = new StreamWriter(SaveTxt.Text + "\\Result_" + MonthCB.Text + "_" + YearCB.Text + ".csv"))
            using (var csvOut = new CsvWriter(writer, CultureInfo.InvariantCulture))
            {
                for (int i = 0; i < Int16.Parse(numberFile); i++)
                {
                    using (var reader = new StreamReader(files[i]))
                    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                    {
                        var records = csv.GetRecords<Record>();
                        csvOut.WriteRecords(records);
                    }
                }
            }

但是,代码仅从前 2 个 .csv 文件写入数据。我应该如何解决这个问题?

4

2 回答 2

0

您的代码中有很多问题,我已尝试修复其中的许多问题。如果仍然无法正常工作,请告诉我。

string[] files = Directory.GetFiles(fbd.SelectedPath, "*.csv", SearchOption.AllDirectories);
using (StreamWriter writer = new StreamWriter(SaveTxt.Text + "\\Result_" + MonthCB.Text + "_" + YearCB.Text + ".csv"))
{
    foreach (string file in files)
    {
        using (var reader = new StreamReader(@"C:\test.csv"))
        {
            while (!reader.EndOfStream)
            {
                writer.WriteLine(reader.ReadLine());
            }
        }
    }
}

可以避免使用 CsvReader。您正在执行 length.ToString() 并再次转换为 int16。这也可以避免,因为长度已经是 int。

于 2020-07-25T10:53:43.530 回答
0

我找到了答案。我为每个输入创建一个新的 .csv 文件。在此之前,我从实际文件中进行编辑,因此大小变得更大,即使数据不存在,该行也被计算在内。现在,它工作得很好。

于 2020-07-25T17:22:48.383 回答