2017-09-15 13 views
0

私はC#を初めて使用しました。ウェブ上のヘルプを使用して、SQL ServerからEXCELにデータをロードして、個々のシートに対応するデータをロードできました。Excelの指定された行にデータをロードする

SSISパッケージ "スクリプトタスク"を使用してこれを達成しようとしています。 C#スクリプト。

今、私は行A7ではなくA1でデータを挿入したいと思います。私は[9442 $ A7:A7]挿入」しようとしました(COL ...)VALUES ...しかし、私は構文エラーを取得おそらく簡単な解決策が、私はそれを把握するように見えることができます

ERROR: System.Data.OleDb.OleDbException: The Microsoft Access database engine could not find the object '9442A7:A7'. Make sure the object exists and that you spell its name and the path name correctly. If '9442 A7:A7' is not a local object, check your network connection or contact the server administrator.

をここに。私のコードは、Excelにデータを作成し、ロードに関連している。

事前のおかげで。

//Use OLE DB Connection and Create Excel Sheet 
Excel_OLE_Con.ConnectionString = connstring; 
Excel_OLE_Con.Open(); 
Excel_OLE_Cmd.Connection = Excel_OLE_Con; 
Excel_OLE_Cmd.CommandText = "Create table [" + ColumnValue + "] (" + TableColumns + ")"; 
Excel_OLE_Cmd.ExecuteNonQuery(); 


//Write Data to Excel Sheet from DataTable dynamically 
foreach (DataTable table in ds.Tables) 
{ 
    String sqlCommandInsert = ""; 
    String sqlCommandValue = ""; 
    foreach (DataColumn dataColumn in table.Columns) 
    { 
     sqlCommandValue += dataColumn + "],["; 
    } 

    sqlCommandValue = "[" + sqlCommandValue.TrimEnd(','); 
    sqlCommandValue = sqlCommandValue.Remove(sqlCommandValue.Length - 2); 
    //sqlCommandValue = sqlCommandValue.Replace(",", " "); 
    sqlCommandInsert = "INSERT into [" + ColumnValue + "A7:A7" + "] (" + sqlCommandValue + ") VALUES("; 

    int columnCount = table.Columns.Count; 
    foreach (DataRow row in table.Rows) 
    { 
     string columnvalues = ""; 
     for (int i = 0; i < columnCount; i++) 
     { 
      int index = table.Rows.IndexOf(row); 
      columnvalues += "'" + table.Rows[index].ItemArray[i] + "',"; 

     } 
     columnvalues = columnvalues.TrimEnd(','); 
     var command = sqlCommandInsert + columnvalues + ")"; 
     //MessageBox.Show(command); 
     Excel_OLE_Cmd.CommandText = command; 
     Excel_OLE_Cmd.ExecuteNonQuery(); 
    } 

} 
Excel_OLE_Con.Close(); 
+0

Excelシートに既にデータがありますか、または新しいデータシートを作成していますか? –

+0

新しいものを作成する。 – Osc

答えて

0

このためにデータフロータスクを使用して、いないスクリプトタスク。選択するために、SQL Serverのデータ・フロー・コンポーネントを使用して、あなたのExcelファイル出力データフローコンポーネントに設定された結果、データ、およびマップを表示します。

データをA7(最初の列であるが第7行目を意味する)とすると、99%はExcelファイル出力コンポーネントのプロパティを設定して6を使用できることを確認しています行を「ヘッダー行」として使用すると、7行目のデータが開始されます。

関連する問題