0

Fundmodelrateとprojectとして2つの異なるワークシートを含む1つのExcelファイルがあります。次に、これら2つの異なるシート値を2つの異なるSQLテーブル(k2_fundmodelrate、k2_project)にインポートします。1つのシートで作業している場合にのみインポートを実行できます。 1つのテーブルですが、ボタンクリックイベントで2つのシート値を同時に2つのテーブルにインポートしたいと思います。以下の私のコード:

private String strConnection = "Data Source=kuws4;Initial Catalog=jes;User ID=sa;Password=******";               
        protected void btnSend_Click(object sender, EventArgs e)
        {

            string path = fileuploadExcel.PostedFile.FileName;

            string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\fmr.xls;Extended Properties=Excel 12.0;Persist Security Info=False";

            OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);

            OleDbCommand cmd = new OleDbCommand("Select * from [FundModelRate$]", excelConnection);
            //OleDbCommand cmd1 = new OleDbCommand("Select * from [FundModelRate$],  [Project$]", excelConnection);
            excelConnection.Open();
            OleDbDataReader dReader;
            dReader = cmd.ExecuteReader();
            SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);

            sqlBulk.DestinationTableName = "K2_FundModelRate";
           // sqlBulk.DestinationTableName = "K2_Project";
            sqlBulk.WriteToServer(dReader);
            excelConnection.Close();
        }
4

2 に答える 2

0

唯一の方法は、2つをループすることだと思いますsheets

この投稿をご覧ください。これは、名前を取得するのに役立ちますsheet

名前を取得したらsheet、それらをループしてから にロードできますSQL

多分これはあなたを助けることができます:

OleDbConnection objConn = null;
System.Data.DataTable dt = null;
string excelConnection = "";

if(strFile.Trim().EndsWith(".xlsx"))
{
    excelConnection = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
}
else if(strFile.Trim().EndsWith(".xls")) 
{
    excelConnection = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
}

objConn = new OleDbConnection(excelConnection);

objConn.Open();

dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

String[] excelSheets = new String[dt.Rows.Count];
int i = 0;

foreach(DataRow row in dt.Rows)
{
    excelSheets[i] = row["TABLE_NAME"].ToString();
    i++;
}

for(int j=0; j < excelSheets.Length; j++)
{
    OleDbCommand cmd = new OleDbCommand("Select * from " + excelSheets[j], excelConnection);

    excelConnection.Open();
    OleDbDataReader dReader;
    dReader = cmd.ExecuteReader();
    SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);

    sqlBulk.DestinationTableName = "YourDestinationTableName";

    sqlBulk.WriteToServer(dReader);
    excelConnection.Close();
}

注:テストされていません

于 2012-08-10T11:24:32.233 に答える