Insert Excel file data into database table using c# [closed]

我的梦境 提交于 2021-02-08 10:27:21

问题


I am developing on web application that will get the excel file using FileUpload control in asp.net c#. Now when click on submit button, i want to insert the excel data into my database table. I have database in SQL-Server. The field of database table & excel file are same.I want to insert that excel's data into my database table. So how can i do this?


回答1:


Others have mentioned using Excel interop to read the Excel file in the comments, but this is NOT safe to do for a web application that may have multiple users.

To get started, have a look at the Excel Data Reader project. I've used this several times for processing Excel files from a web application and it works quite well.




回答2:


You can use OLEDB classes to read directly from Excel file using the Excel drivers in OleDbConnection. Get the data in a datatable and save it to database.

 string connectString =
                "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\testit.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
            OleDbConnection conn = new OleDbConnection(connectString);
            OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Sheet1$]", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            // Save your datatable records to DB as you prefer.



回答3:


I've been testing NPOI as a replacement for another 3rd party Excel parsing library.

https://code.google.com/p/npoi/

So far it seems to work pretty well and have a very complete feature set. Of course, if all you need is very basic Excel data reading (and no writing), then the other DB connection style interfaces mentioned here should work well enough.

EDIT: added sample code

using( FileStream fs = new FileStream("file.xls", FileMode.Open, FileAccess.Read) )
{
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    double value = wb.GetSheet("Sheet1").GetRow(1).GetCell(1).NumericCellValue;
    // read other values as necessary.
}



回答4:


try the following code . maybe its crude but it works

string connectString =
            "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\data\\exceltest.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
        OleDbConnection conn = new OleDbConnection(connectString);
        OleDbDataAdapter da = new OleDbDataAdapter("Select * From [Sheet1$]", conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        conn.Close();
        SqlConnection sqlc = new SqlConnection(@"server=.\SQLEXPRESS;user id=sa;pwd=windows;database=exceltest");
        sqlc.Open();
        SqlCommand cmd = new SqlCommand("select * from table1", sqlc);
        SqlDataAdapter sda = new SqlDataAdapter("select * from table1", sqlc);
        sda.InsertCommand = new SqlCommand("insert into table1", sqlc);
        DataTable dbset = new DataTable();
        da.Fill(dbset);
        SqlCommand cmdinsert = new SqlCommand();
        cmdinsert.Connection = sqlc;
        foreach (DataRow dsrc in dt.Rows)
        {
            string insertcommand = "insert into table1" + dbset.TableName + " ";
            string cols = "";
            string vals = "";
            DataRow dr = dbset.NewRow();
            foreach (DataColumn clm in dt.Columns)
            {
                dr[clm.ColumnName] = dsrc[clm.ColumnName].ToString(); ;
                if (cols.Length > 0)
                {
                    cols += ",[" + clm.ColumnName+"]";
                }
                else
                {
                    cols = "["+clm.ColumnName+"]";
                }
                if (vals.Length > 0)
                {
                    vals += "," + "'" + dsrc[clm.ColumnName].ToString() + "'";
                }
                else
                {
                    vals = "'" + dsrc[clm.ColumnName].ToString() + "'";
                }

            }
            insertcommand += "(" + cols + ") values("+vals+")";
            cmdinsert.CommandText = insertcommand;
            cmdinsert.ExecuteNonQuery();
            insertcommand = "";

        }

        sqlc.Close();


来源:https://stackoverflow.com/questions/17405140/insert-excel-file-data-into-database-table-using-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!