Строка подключения для чтения csv в папке utf-8 - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в C#, и у меня возникла проблема с загрузкой данных из CSV в базу данных, пожалуйста, помогите мне

Я хочу разрешить операторам выбирать CSV-файл в гибком каталоге с помощью класса OpenFileDialog, подобного этому :

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 + "]";
   ...
}

Код выше работает нормально, если я выберу файл CSV в папке UTF-8, например: C: \ Users \ nmhoan \ Desktop \ New folder. Но если я выберу файл в папке UTF-8, например: макет Desktop \ Vẽ, я получил сообщение:

System.Data.OleDb.OleDbException: '' C: \ Users \ nmhoan \ Desktop \ Vẽ layout \ 'не является допустимым путем. Убедитесь, что имя пути написано правильно и что вы подключены к серверу, на котором находится файл. '

Я потратил так много времени на поиск решения, но все еще не могу фиксированный. Пожалуйста, помогите мне решить эту проблему.

спасибо большое

1 Ответ

0 голосов
/ 08 мая 2020

Если вы хотите прочитать файл CSV, вы не должны использовать Excel для этой цели, потому что это должно быть много проблем (например, он должен быть установлен на машине, на которой работает ваша программа, ложная интерпретация чисел как дат, трудно использовать правильно, изменение значений - беспорядок и т. д. c.). Вместо этого используйте специализированную библиотеку, которая может читать и записывать файлы CSV. Их много для C#, но я лично предпочитаю CsvHelper .

...