0

我有一个要转换为 CSV 的文本文件。当我在EXCEL 导入向导中检查文件时,列和行如下图所示:

在此处输入图像描述

当我读取文件并以 .csv 格式写入文件时,结果如下图所示,如突出显示的行中所示。

在此处输入图像描述

我注意到文件中的一些数据有多个逗号',它们是行数据用完的地方。这超出了我的范围。

我正在使用以下代码:

class Program
{
static void AddComma(string s, TextWriter writer)
{
    foreach (string line in s.Replace("\"", "").Split('\n'))
    {
        for (int i = 0; i < line.Length; i++)
        {
            if (i > 0)
            writer.Write(line[i]);
        }
        writer.WriteLine();
    }
}


static void Main(string[] args)
{
    TextReader reader = new StreamReader(@"C:\folder\sample.txt");
    string a = reader.ReadToEnd();
    reader.Close();

    FileStream aFile = new FileStream(@"C:\folder\sample.csv", FileMode.Create);
    AddComma(a, new StreamWriter(aFile));
    aFile.Close();


}
}

找到解决方案更新:

我所做的只是修改了以下代码行:我删除了 Replace() 方法。

由此:foreach (string line in s.Replace("\"", "").Split('\n'))

对此:foreach (string line in s.Split('\n'))

数组也从零开始,所以我更改了计数器或 int 的起点:含义而不是这个:

for (int i = 0; i < line.Length; i++)

我有这个:

            for (int i = -1; i < line.Length; i++)
            {
                if (i > -1)
                writer.Write(line[i]);
            }

这确保我也将获得文件中从零开始的第一列。

感谢大家。

4

1 回答 1

1

问题是您正在剥离分隔引号。CSV 文件可以引用值。当值中有逗号时,您需要引用它。

在您的示例中,除了文件扩展名外,该文件已显示为 CSV 格式。我不知道您的实际生产文件是否更复杂并且需要更多格式。然而,在这个例子中,它只需要一个文件重命名。

请参阅RFC 4180了解相当标准的规范。它有点浓。

于 2013-08-02T04:32:33.150 回答