0

我正在将 .CSV 文件从 Angular 应用程序导入到 MVC 中,并且我能够获取这样的文件

Int32 strLen, strRead;
            System.IO.Stream stream = Request.InputStream;
            strLen = Convert.ToInt32(stream.Length);
            byte[] strArr = new byte[strLen];
            strRead = stream.Read(strArr, 0, strLen);

这里正在导入的文件被转换为byte[]因为我正在使用读取文件

System.IO.Stream 流 = Request.InputStream

然后我把它转换成这样的字符串

 string a = System.Text.Encoding.UTF8.GetString(strArr);

并尝试拆分内容并检索数据,但它变得非常复杂,我想知道是否有任何替代方法。在这样一个简单的 .CSV 文件中

在此处输入图像描述 将 byte[] 转换为这样的字符串后得到结果

在此处输入图像描述

一旦我应用逻辑来拆分字符串并检索数据,逻辑就会像这样变得非常混乱

在此处输入图像描述

是否有任何有效的方式可以将导入的 .CSV 文件转换为 JSON

4

2 回答 2

1

将流作为文本文件保存到 TEMP 文件夹中。

使用任何解析器来处理 CSV 文件。(示例FileHelpers

使用任何 Json 助手将其转换为输出格式。(例如:newtonsoft

于 2017-08-31T14:25:28.567 回答
1

您可以使用Cinchoo ETL - 一个开源库,轻松将 CSV 转换为 JSON。

using (var parser = new ChoCSVReader("IgnoreLineFile1.csv")
    .WithField("PolicyNumber", 1)
    .WithField("VinNumber", 2)
    .Configure(c => c.IgnoreEmptyLine = true)
    .Configure(c => c.ColumnCountStrict = true)
    )
{
    using (var writer = new ChoJSONWriter("ignoreLineFile1.json")
            .WithField("PolicyNumber", fieldName: "Policy Number")
            .WithField("VinNumber", fieldName: "Vin Number")
        )
        writer.Write(parser.Skip(1));
}

在上面,您也可以根据您的要求将流传递给读取器和写入器。

希望这会有所帮助。

免责声明:我是这个库的作者。

于 2017-09-29T22:46:24.877 回答