将excel文件上载到数据库

时间:2013-12-07 08:35:14

标签: c# asp.net

我想从Excel 2003文件导入数据,但我的C#程序提供了错误

  

外部表格不是预期的格式

我使用此代码:

string ExcelContentType = "application/vnd.ms-excel";
string Excel2010ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

if (fileuploadExcel.HasFile)
{
    //Check the Content Type of the file 
    if (fileuploadExcel.PostedFile.ContentType == ExcelContentType || fileuploadExcel.PostedFile.ContentType == Excel2010ContentType)
    {
            try
            {
                //Save file path 
                string path = string.Concat(Server.MapPath("~/TempFiles/"), fileuploadExcel.FileName);
                //Save File as Temp then you can delete it if you want 
                fileuploadExcel.SaveAs(path);

                string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

                // Create Connection to Excel Workbook 
                using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
                {
                    OleDbCommand command = new OleDbCommand("Select * FROM [Sheet1$]", connection);
                    connection.Open();
                    // Create DbDataReader to Data Worksheet 
                    using (DbDataReader dr = command.ExecuteReader())
                    {
                        // SQL Server Connection String 
                        string sqlConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
                        // Bulk Copy to SQL Server 
                        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
                        {
                            bulkCopy.DestinationTableName = "Excel_table";
                            bulkCopy.WriteToServer(dr);
                            lblMessage.Text = "The data has been exported succefuly from Excel to SQL";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message;
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

您好我在这里使用它从Excel文件导入。试试这个。工作100%... 在这里你应该在你的应用程序中有一个名为“Files”的文件夹,在上传excel文件后,它将被存储,你的程序将从“Files”文件夹中的excel文件中读取。

  protected void btnImport_Click(object sender, EventArgs e)
    {
        ArrayList alist = new ArrayList();
        string connString = "";
        string strFileType = Path.GetExtension(fileuploadExcel.FileName).ToLower();
        string fileBasePath = Server.MapPath("~/Files/");
        string fileName = Path.GetFileName(this.fileuploadExcel.FileName);
        string fullFilePath = fileBasePath + fileName;

        //Connection String to Excel Workbook
        if (strFileType.Trim() == ".xls")
        {
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fullFilePath +
                          ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
        }
        else if (strFileType.Trim() == ".xlsx")
        {
            connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullFilePath +
                         ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";
        }
        if (fileuploadExcel.HasFile)
        {
            string query = "SELECT [UserName],[Education],[Location] FROM [Sheet1$]";
           using(OleDbConnection conn = new OleDbConnection(connString))
           {
                if (conn.State == ConnectionState.Closed)
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(query, conn);
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);

                Session["griddata"] = ds.Tables[0];
                grvExcelData.DataSource = Session["griddata"];
                grvExcelData.DataBind();                  
            }
        }
    }

答案 1 :(得分:0)

试试这个:连接字符串

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";

答案 2 :(得分:0)

您可以使用SSIS工具(Sql server集成服务) 创建与Excel工作表的连接,然后添加源和目标 您的来源将是Excel表格,您的目的地将是数据库表格 好? 如果您需要更多信息,请告诉我......