0

.net アプリケーションで SQL テーブルへの Excel データ インポートを使用していますが、データの保存中に次のエラーが発生します。

私のコード:

protected void btnSave_Click(object sender, EventArgs e)
{
    string FileName = lblFileName.Text;
    string Extension = Path.GetExtension(FileName);
    string FolderPath = Server.MapPath (ConfigurationManager.AppSettings["FolderPath"]);
    string CommandText = "";
    switch (Extension)
    {
        case ".xls": //Excel 97-03
            CommandText = "spx_ImportFromExcel03";
            break;
        case ".xlsx": //Excel 07
            CommandText = "spx_ImportFromExcel07";
            break;
    }
    //Read Excel Sheet using Stored Procedure
    //And import the data into Database Table
    String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    SqlConnection con = new SqlConnection(strConnString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = CommandText;
    cmd.Parameters.Add("@SheetName", SqlDbType.VarChar).Value = ddlSheets.SelectedItem.Text;
    cmd.Parameters.Add("@FilePath", SqlDbType.VarChar).Value = FolderPath + FileName;
    cmd.Parameters.Add("@HDR", SqlDbType.VarChar).Value = rbHDR.SelectedItem.Text;
    cmd.Parameters.Add("@TableName", SqlDbType.VarChar).Value = txtTable.Text;   
    cmd.Connection = con;
    try
    {
        con.Open();
        object count = cmd.ExecuteNonQuery();
        lblMessage.ForeColor = System.Drawing.Color.Green;
        lblMessage.Text = count.ToString() + " records inserted.";  
    }
    catch (Exception ex)
    {
        lblMessage.ForeColor = System.Drawing.Color.Red;     
        lblMessage.Text = ex.Message;  
    }
    finally
    {
        con.Close();
        con.Dispose();
        Panel1.Visible = true;
        Panel2.Visible = false; 
    }
}  

そして、web.configでExcel形式の接続文字列を次のように使用しています:

<connectionStrings>
<add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/>
    <add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}'"/>

私はこのエラーを理解できませんでした。誰でも助けることができますか?

4

2 に答える 2

1

C# コードで Excel ファイルを読み取るには、microsoft oledb provider.Microsoft.ACE.OLEDB.12.0 プロバイダーが必要です。xlsx 形式のファイルを読み取るには、Microsoft.Jet.OLEDB.4.0 が必要です。ファイルを以下に示します。

using System.Data.OleDb;

   OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Filename.xls") + ";Extended Properties=Excel 8.0"); 
            OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", con);
            con.Open(); 
            OleDbDataReader dr = cmd.ExecuteReader(); 
            string col0 = ""; 
            string col1 = ""; 
            string col2 = ""; 
            while (dr.Read()) 
            { 
                col0 =Convert.ToString(dr[ 0]); 
                col1 =Convert.ToString(dr[ 0]); 
                col2 =Convert.ToString(dr[ 0]); 
                /*******************************
               Write Statements to Insert values of each rows into table 
                *********************************/
            } 
                con.Close(); 
            }
于 2012-12-01T11:15:54.210 に答える
0

これは、Excelからデータベースにデータをインポートするための良い記事です。Excel を Sql Do にインポートすると、そこで指示されたとおりに実行できます。

于 2012-12-01T10:19:13.470 に答える