1

ExcelシートからSqlデータベースにデータをインポートします..すべて問題ありません.このコードを実行すると、アクセスエンジンがmtシートを見つけることができませんでした.このエラーのようにスローされます..私のエラーは

Microsoft Jet データベース エンジンは、オブジェクト 'Sheet1$' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。

しかし、私はすでに指定フォルダーを確認しました。それは正しいです..なぜそれが繰り返されるのかわかりません

以下の私のC#コード..

public partial class _Default : System.Web.UI.Page 
{
    string constr = @"Data Source=VIS1-B12\SQLEXPRESS;Initial Catalog=Sql_Excel;Integrated Security=True providerName=System.Data.SqlClient" ;

    protected void btn_okClick(object sender, EventArgs e)
    {
        string path = Fup_Excel.PostedFile.FileName;
        string exconstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path+";Extended Properties=Excel 8.0";

        OleDbConnection excelcon = new OleDbConnection(exconstr);
        excelcon.Open();

        OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", excelcon);
        OleDbDataReader dbreader;
        OleDbDataAdapter dap = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        //dap.Fill(ds,"sheet1");
        dbreader = cmd.ExecuteReader();

        SqlBulkCopy bcpy = new SqlBulkCopy(constr);
        bcpy.DestinationTableName = "Excel_Details";
        bcpy.WriteToServer(dbreader);
        //GridView1.DataSource = ds.Tables[0].DefaultView;
        //GridView1.DataBind();
        excelcon.Close();
    }
}
4

1 に答える 1

0

コードを使用して Excel シート名を取得することをお勧めします。
コードを以下に示します

OleDbConnection con = new OleDbConnection(ConnString);
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = con;
OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
DataTable dtExcelRecords = new DataTable();
con.Open();
DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
dAdapter.SelectCommand = cmd;
dAdapter.Fill(dtExcelRecords);
于 2012-10-15T11:53:51.787 に答える