导入Csv文件Oledb C#

本文关键字:Oledb 文件 Csv 导入 | 更新日期: 2023-09-27 17:58:18

嗨,有人能给我这个问题的解决方案吗?我必须使用c#导入csv文件,但我在这个屏幕截图中遇到了这个问题屏幕

单独的betwenn列是",",但在数据中有一行包含".

导入Csv文件Oledb C#

Mohamed,我看不到您的屏幕截图,但可以将您指向通用列表并创建一个类来表示数据。您需要从"项目"菜单中添加引用。

  • Microsoft.VisualBasic
  • 系统配置
  • WindowsBase

我包含了一段代码中的代码:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualBasic.FileIO;
namespace CsvToListExp
{
class Program
{
    public static void Main(string[] args)
    {
        // HARD_CODED FOR EXAMPLE ONLY - TO BE RETRIEVED FROM APP.CONFIG IN REAL PROGRAM
        string hospPath = @"C:''events''inbound''OBLEN_COB_Active_Inv_Advi_Daily_.csv";
        string vendPath = @"C:''events''outbound''Advi_OBlen_Active_Inv_Ack_Daily_.csv";
        List<DenialRecord> hospList = new List<DenialRecord>();
        List<DenialRecord> vendList = new List<DenialRecord>();
        //List<DenialRecord> hospExcpt = new List<DenialRecord>();  // Created at point of use for now
        //List<DenialRecord> vendExcpt = new List<DenialRecord>();  // Created at point of use for now
        using (TextFieldParser hospParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(hospPath))
        {
            hospParser.TextFieldType = FieldType.Delimited;
            hospParser.SetDelimiters(",");
            hospParser.HasFieldsEnclosedInQuotes = false;
            hospParser.TrimWhiteSpace = true;
            while (!hospParser.EndOfData)
            {
                try
                {
                    string[] row = hospParser.ReadFields();
                    if (row.Length <= 7)
                    {
                        DenialRecord dr = new DenialRecord(row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
                        hospList.Add(dr);
                    }
                }
                catch (Exception e)
                {
                    // do something
                    Console.WriteLine("Error is:  {0}", e.ToString());
                }
            }
            hospParser.Close();
            hospParser.Dispose();
        }

        using (TextFieldParser vendParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(vendPath))
        {
            vendParser.TextFieldType = FieldType.Delimited;
            vendParser.SetDelimiters(",");
            vendParser.HasFieldsEnclosedInQuotes = false;
            vendParser.TrimWhiteSpace = true;
            while (!vendParser.EndOfData)
            {
                try
                {
                    string[] row = vendParser.ReadFields();
                    if (row.Length <= 7)
                    {
                        DenialRecord dr = new DenialRecord(row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
                        vendList.Add(dr);
                    }
                }
                catch (Exception e)
                {
                    // do something
                    Console.WriteLine("Error is:  {0}", e.ToString());
                }
            }
            vendParser.Close();
            vendParser.Dispose();
        }
        // Compare the lists each way for denials not in the other source
        List<DenialRecord> hospExcpt = hospList.Except(vendList).ToList();
        List<DenialRecord> vendExcpt = vendList.Except(hospList).ToList();
    }
}
}

谷歌TestFieldParser并查看方法、属性和构造函数。它的用途非常广泛,但由于它所经过的层次,运行速度较慢。它能够设置分隔符、处理用引号括起来的字段、修剪空白等等。