在c#中从Excel导入数据到数据库

本文关键字:数据 数据库 导入 Excel 中从 | 更新日期: 2023-09-27 18:12:16

我需要用编码指令从Excel导入数据到数据库。
但是它给了我一个错误。第11行"0位置没有行"。在此期间,我应该替换我的表名,而不是"table"在第8行??

下面是我的代码:
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];
        }
    }
}

在c#中从Excel导入数据到数据库

谢谢大家的回答。我找到了其他解决问题的方法下面是我的代码:

            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.DataSet DtSet;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:''C# Projects''ex.xlsx';Extended Properties=Excel 8.0;");
            MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
            MyCommand.TableMappings.Add("tbl_info", "tbl_info");
            DtSet = new System.Data.DataSet();
            MyCommand.Fill(DtSet);
            dgv.DataSource = DtSet.Tables[0];
            MyConnection.Close();

来源:读取并导入Excel文件到数据集

查看此链接

从c#中读取Excel文件

所以,是这样的

使用Microsoft Jet:首先创建一个连接

string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
filename + @";Extended Properties='Excel 12.0;IMEX=1'";
System.Data.OleDb.OleDbConnection ExcelConnection =
 new System.Data.OleDb.OleDbConnection(Con2);

然后做一些像…

DataSet ds = new DataSet();
 // Create OleDbCommand object and select data from worksheet TABNAME
 OleDbCommand cmd_hulpkostenplaatsen = new OleDbCommand("SELECT * FROM [TABNAME$]", ExcelConnection);
        OleDbDataAdapter oleda_hulpkostenplaatsen = new OleDbDataAdapter();
        oleda_hulpkostenplaatsen.SelectCommand = cmd_hulpkostenplaatsen;
        oleda_hulpkostenplaatsen.Fill(ds, "HULPKOSTENPLAATSEN");
        foreach (DataRow row in ds.Tables["HULPKOSTENPLAATSEN"].Rows)
        {
        }

这个链接也很有用。

http://www.c-sharpcorner.com/blogs/import-excel-data-to-database-using-c-sharp1