首页 > 解决方案 > 在 utf-8 文件夹中读取 csv 的连接字符串

问题描述

我是 C# 新手,将数据从 CSV 上传到数据库时遇到问题,请帮助我

我想允许操作员通过使用类 OpenFileDialog 选择灵活目录中的 CSV 文件,如下所示:

OpenFileDialog dlg = new OpenFileDialog();
...
filename = dlg.FileName;// get full path of selected file
string fileDirectory = Path.GetDirectoryName(filename); //get directory
string excelConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + fileDirectory + "\\\";Extended Properties=\"text;FMT=Delimited;HDR=Yes;CHARSET=65001;\""; //connection
using(OleDbConnection ExcelConnection = new OleDbConnection(excelConnStr);)
{
   string csvFiename = Path.GetFileName(filename);
   string excelQR = "select * from ["+ csvFiename + "]";
   ...
}

如果我在无 UTF-8 文件夹例如 C:\Users\nmhoan\Desktop\New 文件夹中选择 CSV 文件,上面的代码工作正常。但是,如果我在 UTF-8 文件夹中选择文件,例如:Desktop\Vẽ 布局,我会收到一条消息:

System.Data.OleDb.OleDbException: ''C:\Users\nmhoan\Desktop\Vẽ layout\' 不是有效路径。确保路径名拼写正确,并且您已连接到文件所在的服务器。

我花了很多时间寻找解决方案,但仍然无法解决。请帮我解决这个问题。

非常感谢你

标签: c#csvconnection-string

解决方案


如果您想读取 CSV 文件,则不应为此目的使用 Excel,因为它非常麻烦(例如必须将其安装在运行程序的机器上,将数字错误解释为日期,难以正确使用,改变价值观是一团糟,等等)。而是使用能够读取和写入 CSV 文件的专用库。C# 有很多,但我个人更喜欢CsvHelper


推荐阅读