Как импортировать данные из таблицы Excel в базу данных на c # с помощью LINQ?

#database #linq #import-from-excel

#База данных #linq #импорт из excel

Вопрос:

У меня есть три столбца в таблице Excel, такие как id, name, family.
Я использую LINQ, и мне нужно импортировать данные из Excel в базу данных с помощью инструкции по кодированию, у меня 6500 записей на листе Excel

Ответ №1:

Вы можете использовать приведенный ниже код, чтобы получить все данные, а затем преобразовать данные формы в список. для приведенного ниже примера для работы у вас должен быть установлен Microsoft Access Database Engine 2010 Redistributable

  public static DataTable ReadExcelWithoutOffice(string filePath)
    {
        var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="   filePath   ";Extended Properties="Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;FirstRowHasNames=true;ImportMixedTypes=Text""; ;
        using (var conn = new OleDbConnection(connectionString))
        {
            conn.Open();

            var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            using (var cmd = conn.CreateCommand())
            {
                cmd.CommandText = "SELECT * FROM ["   sheets.Rows[0]["TABLE_NAME"].ToString()   "] ";

                var adapter = new OleDbDataAdapter(cmd);
                var ds = new DataSet();
                adapter.Fill(ds);
                return ds.Tables[0];
            }
        }
    }
  

Комментарии:

1. Спасибо за ваш ответ. Но это выдает ошибку. «В позиции 0 нет строки». в строке 11. В то же время, должен ли я изменить количество «ТАБЛИЦА» в строке 8??

Ответ №2:

Спасибо всем за ваш ответ.
Я нашел свою проблему. Вот код :

         string pach = @"D:C# Projectsex.xlsx";
        var excelData = new ExcelQueryFactory(pach);
        var data = from x in excelData.Worksheet<xlsdata>("MySheet")
                   select x;
        DataClassesDataContext db = new DataClassesDataContext();
        foreach (var d in data)
        {
            db.tbl_infos.InsertOnSubmit(new tbl_info
            {
                id = d.id,
                name = d.name,
                family = d.family
            });
        }
        db.SubmitChanges();
  

Ответ №3:

Вам нужно будет импортировать и ссылаться на OpenXML, открывать листы, лист, рабочий лист, IIRC, а затем анализировать столбцы в строки.

OpenXML

Затем создайте адаптер данных SQL и все такое, чтобы использовать либо ConnectionString, либо SqlConnection, запустите параметризованный запрос, и он находится в базе данных.

Пример SQL