1

OLEDB を使用して Excel に行を挿入しようとしましたが、問題は次のとおりです。

  • : シートの最後に数行挿入します。
  • : Excel ドキュメントを開くと、挿入された行が表示されます。
  • : 挿入されたすべての行を削除し、アプリケーションを再起動します。
  • : 行は、最後の行インデックスに引き続き挿入されます

元 :

  • Excelの行3020に行が挿入されました
  • この行を削除して保存
  • アプリを再起動して、もう一度挿入してください
  • 行はExcelの行3021になります

public void Insert (string text, Excel.Worksheet ws, string column){

        OleDbCommand cmd1 = new OleDbCommand("INSERT INTO ["+ws.Name+"$] " +
                           "([" + column + "]) VALUES(' " + text + " ')", _oleConn);

        cmd1.ExecuteNonQuery();
    }
4

2 に答える 2

2

ワークシートがこれらの列の XML をバックグラウンドで保持している可能性があります。現在のコードは、行をワークシートの最後に配置します。挿入する行の前にある空の行を削除してから追加するように、コードを変更する必要があります。例は次のとおりです。

public void Insert (string text, Excel.Worksheet ws, string column){
    OleDbCommand cmd0 = new OleDbCommand("DELETE FROM ["+ws.Name+"$] where /*column1*/ = '' AND /*column2*/ = '' /*...*/ AND /*columnN*/ = ''", _oleConn);

    cmd0.ExecuteNonQuery();

    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO ["+ws.Name+"$] " +
                       "([" + column + "]) VALUES(' " + text + " ')", _oleConn);

    cmd1.ExecuteNonQuery();
}
于 2013-03-18T16:42:32.280 に答える
1

行内のデータを削除しても、その行が存在するというExcelのレコードは削除されません。行全体を選択して(行の番号をクリック)、右クリックして[削除]を選択すると、行を削除できます。

于 2013-03-18T16:30:24.197 に答える