You need to enable JavaScript to run this app. 使用OleDbConnection、DataTable读取CSV文件时行列格式错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用OleDbConnection、DataTable读取CSV文件时行列格式错误如何解决

C#读取分号分隔CSV文件格式错误问题

我在处理CSV文件时遇到了问题,尝试从CSV文件中读取行列数据,但现有代码无法获取正确格式的行列数据。

当前使用的OleDb实现代码

DataTable dt = new DataTable();
string FileName = strFilePath;

using (FileStream stream = File.Open(Path.Combine(@"C:\Users\mulus\Desktop", "schema.ini"), FileMode.Create, FileAccess.Write, FileShare.None))
{
    using (StreamWriter writer = new StreamWriter(stream))
    {
        writer.WriteLine(string.Format("[{0}]", FileName));
        writer.WriteLine("Format=Delimited(;)");
        writer.WriteLine("TextDelimiter=\"");
        writer.WriteLine("ColNameHeader=True");
    }
}
            
OleDbConnection conn = new OleDbConnection
       ("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " +
         Path.GetDirectoryName(FileName) +
         "; Extended Properties = \"Text;FMT=Delimited(;)\"");
conn.Open();

var abc = Path.GetFileName(FileName);

OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + Path.GetFileName(FileName), conn);
adapter.Fill(dt);

conn.Close();

已尝试的解决方案

所有方案均未解决问题:

  • 尝试修改FileStream类的不同格式参数
  • 不使用FileStream类实现
  • 将连接字符串中的; Extended Properties = "Text;FMT=Delimited(;)"修改为Format=Delimited(;)、FMT=TabDelimiter、Format=TabDelimiter,均未生效,配置被忽略
  • 尝试直接修改注册表对应配置,但出现报错(无法编辑:写入值的新内容时出错)
  • 尝试为自身账户分配“完全控制”权限,但无足够权限操作

备用实现方案的问题

我也尝试使用直接读取拆分的代码实现,但该代码会忽略被引号包裹字段内的;符号(如"45;43"),将其识别为2列而非1列,整体格式非常混乱,且容错率低,并不是合适的实现方案:

using (StreamReader sr = new StreamReader(strFilePath, Encoding.Default))
{
    string[] headers = sr.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.None);
    foreach (string header in headers)
    {
        dt.Columns.Add(header);
    }
    while (!sr.EndOfStream)
    {
        string[] rows = sr.ReadLine().Split(';');
        DataRow dr = dt.NewRow();
        for (int i = 0; i < headers.Length; i++)
        {
            dr[i] = rows[i];
        }
        dt.Rows.Add(dr);
    }

}

如果大家知道问题出在哪里或者有其他实现思路,还请不吝赐教,非常感谢。

运行环境

  • Windows 7
  • Excel 2010

内容的提问来源于stack exchange,提问作者M. Ulus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 03:03:01