【问题标题】:How to import data from Excel sheet to database in c# with LINQ?如何使用 LINQ 在 c# 中将数据从 Excel 工作表导入数据库?
【发布时间】:2016-10-05 13:37:14
【问题描述】:

我在 Excel 工作表中有三列,例如 id、name、family。
我正在使用 LINQ,我需要使用编码指令将数据从 Excel 导入数据库,我在 Excel 表中有 6500 条记录

【问题讨论】:

    标签: database linq import-from-excel


    【解决方案1】:

    您可以使用以下代码获取所有数据,然后您可以将表单 DataTable 转换为 List。对于下面的例子,你应该安装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];
                }
            }
        }
    

    【讨论】:

    • 感谢您的回答。但这给了我一个错误。 “位置 0 处没有行。”在第 11 行。与此同时,我应该更改第 8 行的“TABLE”金额吗??
    【解决方案2】:

    谢谢大家的回答。
    我发现了我的问题。这是代码:

            string pach = @"D:\C# Projects\ex.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 Example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 2022-07-03
        相关资源
        最近更新 更多