«Microsoft.VisualBasi c .FileIO не существует». Как включить эту библиотеку в мой проект? - PullRequest
0 голосов
/ 28 мая 2020

Итак, я пытаюсь проанализировать файл .csv со столбцами, которые могут включать свои собственные символы запятой.

Ответы здесь и здесь говорят, что лучший способ чтобы легко справиться с этим без написания собственного построчного парсера, нужно было бы использовать библиотеку Microsoft.VisualBasi c .FileIO.

К сожалению, когда я пытаюсь включить это в свой проект, я получаю обычную ошибку:

'File.IO' does not exist in the namespace "Microsoft.VisualBasic" (are you missing an assembly reference?)

Исправления для этой проблемы здесь и здесь все говорят, что мне нужно использовать диспетчер ссылок для добавления Microsoft.VisualBasi c в мой проект, но в моем диспетчере ссылок нет вкладок Assemblies с вкладками подгруппы Framework и Extensions, которые официальные справочные документы скажем, чтобы использовать, чтобы добавить пакет в мой проект. Я приложил сюда снимок экрана моего окна Менеджера ссылок. На вкладке "Проекты" просто отображается список всех проектов в моем решении, а вкладка "Общие проекты" пуста. Reference Manager

Я также проверил, следует ли вместо этого включать пакет NuGet, но это вообще не решило проблему.

Ответы [ 2 ]

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

Я нахожу решение проблемы.

Сначала смените платформу с. net core2.1 на. net core3.0 или. net core 3.1.

Во-вторых, вы можете обратиться к следующему коду для преобразования файла CSV в формат данных с помощью

Microsoft.VisualBasi c .FileIO.

static void Main(string[] args)
        {
            DataTable table = GetDataTabletFromCSVFile("D:\\Test.csv");
        }

        private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
        {
            DataTable csvData = new DataTable();
            try
            {
                using (TextFieldParser csvReader = new TextFieldParser(csv_file_path))
                {
                    csvReader.SetDelimiters(new string[] { "," });
                    csvReader.HasFieldsEnclosedInQuotes = true;
                    string[] colFields = csvReader.ReadFields();
                    foreach (string column in colFields)
                    {
                        if (column == "Name" || column == "Age" || column == "Id")
                        {
                            DataColumn datecolumn = new DataColumn(column);
                            datecolumn.AllowDBNull = true;
                            csvData.Columns.Add(datecolumn);
                        }
                    }
                    while (!csvReader.EndOfData)
                    {
                        string[] fieldData = csvReader.ReadFields();
                        for (int i = 0; i < fieldData.Length; i++)
                        {
                            if (fieldData[i] == "")
                            {
                                fieldData[i] = null;
                            }
                        }
                        csvData.Rows.Add(fieldData);
                    }
                }

            }
            catch (Exception)
            {
                throw;
            }
            return csvData;
        }

Результат: enter image description here

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

В итоге я использовал библиотеку CSVHelper , которая отлично устанавливается с NuGet и отлично обрабатывает столбцы, содержащие запятые, и даже может быть настроена на игнорирование пустых строк и заголовков. знаю, почему VisualBasi c .FileIO не может быть добавлен в мой проект, почему лучшие решения за 6+ лет go сказали использовать эту библиотеку, или почему мое окно Reference Manager отличается от того, что указано в официальной справке , но я решил свою проблему root, поэтому надеюсь, что мне действительно не нужно использовать диспетчер ссылок в будущем для чего-либо.

...