在C#中将数据从Excel导入数据库

时间:2016-10-10 10:04:51

标签: c# sql database excel

我需要通过编码指令将数据从Excel导入数据库 但它给了我一个错误。 “位置0没有排。”在第11行。
与此同时,我应该替换我的表名而不是第8行中的“TABLE”吗?

以下是我的代码:

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];
        }
    }
}

2 个答案:

答案 0 :(得分:1)

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

            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();

来源:Read and Import Excel File into DataSet

答案 1 :(得分:0)

查看此链接。

Reading Excel files from C#

所以,就像这样。

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

char string[] = "0101";
char ch = string[0];
x = magic(ch);
if (x)
    printf("int zero")

然后做一些像......

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);

此链接也很有用。

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