2015-01-19 4 views
-2

Мне нужно создать метод, который загружает загруженный файл csv и добавлять данные из файла и добавляет его в таблицу.Пользовательская загрузка файла csv

Я использую C# и InterBase.

Проблема, которую у меня есть - некоторые пользователи могут загружать другой формат csv (поэтому я не могу создать класс с жестким кодированием). Есть 10 колонок, и 4 из них являются обязательными. Пользователь может загрузить файл с 4 столбцами или более. Поэтому мне нужно сопоставить имя столбцов из файла с столбцами из таблицы. Есть ли простой способ сделать это?

+0

Будет ли имя столбца в исходном файле ** всегда совпадать с именами столбцов в таблице адресатов? –

+0

Да, они будут. – MarinaS

ответ

0

Да, это можно сделать довольно легко. Вы можете сделать это с нуля или использовать существующие инструменты для этого. В принципе, вам нужно прочитать данные из CSV в DataTable или пользовательский объект. Затем, в свою очередь, вы можете записать эту таблицу или объект в базу данных.

Я рекомендую вам взглянуть на CSV Helper - https://github.com/JoshClose/CsvHelper

CSV Помощник должен делать все, что вам нужно сделать, за исключением записи в InterBase. Старайтесь не изобретать колесо, если только этого не потребуется.

Но, если вы действительно хотите написать свое собственное с нуля, вы можете это сделать. Обычно мой первый шаг - загрузить данные из файла CSV в DataTable. Затем я создаю пользовательские объекты и строю их список. Это связано с тем, что у меня обычно уже есть способ записи пользовательских объектов в базу данных/конечный пункт назначения.

Отображение столбцов из DataTable на ваш объект не должно быть затруднительным, поскольку вы можете ссылаться на столбец по его названию. Вот очень простой пример:

class Program 
{ 
    static void Main(string[] args) 
    { 
     DataTable CarsImportedFromFile = new DataTable(); 
     // load data in from CSV 
     List<Car> Cars = new List<Car>(); 

     foreach (DataRow CurrentRow in CarsImportedFromFile.Rows) 
     { 
      Car MyCar = new Car(); 
      MyCar.Model = CurrentRow["Model"].ToString(); 
      MyCar.Color = CurrentRow["Color"].ToString(); 
      Cars.Add(MyCar); 
     } 
    } 
} 

class Car 
{ 
    public string Model { get; set; } 
    public string Color { get; set; } 
} 

Существует множество способов сделать все это. Если вы ищете SO, вы можете найти хорошие вопросы по динамическому сопоставлению, преобразованию данных в объекты, импортированию CSV и т. Д.

+0

спасибо Я пробовал простое решение, и он отлично работает. – MarinaS

Смежные вопросы