1

C# Excel Addin プロジェクトを作成しました。このプロジェクトでは、その Excel に User コントロールを追加し、 User Control にボタンを配置しました。ボタンについては、データベースから Excel セル (シート 1) にデータを取得するために作成したコードです。しかし、ここで発生した問題は、ボタンをクリックすると、新しい Excel シート (アプリケーション) が開かれ、データベースから新しい Excel シートにデータが入力されます。しかし、データベースから既存の Excel シートのみにデータを入力したいのですが、新しい Excel シートにはデータを入力したくありません。あなたは私を助けることができますか?

新しいExcelシートではなく、同じExcelでデータを取得する必要があります。以下の私のコード: -

worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
app.Visible = true;---- **here i am getting new excel application  and data is getting populated**
worksheet.Name = "Export to Excel";
Excel.Range mycell = Excel.Range)worksheet.get_Range("A1:B1","A1:B1");

int CountColumn = ds.Tables[0].Columns.Count;
int CountRow = ds.Tables[0].Rows.Count;
int col = 0;
int row = 1;
string data = null;
int i = 0;
int j = 0;
for (col = 0; col < CountColumn; col++)
{
    worksheet.Cells[row, col + 1] = ds.Tables[0].Columns[col].ColumnName.ToString();
}

}
4

2 に答える 2

1

ここで Excel Application オブジェクトを使用している理由がわかりません。つまり、アドイン プロジェクトではなく、Globals.ThisAddin.Application.ActiveSheet/ Globals.ThisAddin.Application.ActiveWorkBook を使用してアクティブなシート/ワークブックを取得する必要があります。wpf プロジェクトでグローバルにアクセスできない場合は、ポストGet the Excel cell address from a UDFで見つけることができる正しい方法を取得してください。これが役立つかどうかを確認してください。

  var worksheet = Globals.ThisAddin.Application.ActiveSheet
        worksheet.Name = "Export to Excel"; 
        Excel.Range mycell = (Excel.Range)worksheet.get_Range("A1:B1","A1:B1");  
        int CountColumn = ds.Tables[0].Columns.Count; 
        int CountRow = ds.Tables[0].Rows.Count; 
        int col = 0; 
        int row = 1; 
        string data = null; 
        int i = 0; 
        int j = 0; 
        for (col = 0; col < CountColumn; col++) 
        { 
            worksheet.Cells[row, col + 1] = ds.Tables[0].Columns[col].ColumnName.ToString(); 
        } 
于 2012-04-28T06:08:20.287 に答える
0

定義上、Excel アドインを使用している場合、Excel は既に開いているため、新しいインスタンスを開始しようとしても意味がありません。Brijesh が述べたように、Excel アドインを使用すると、Globals.ThisAddin.Application を使用して現在の Excel インスタンスにアクセスでき、そこからオブジェクト モデル全体に​​アクセスできます。

余談ですが、セルごとに繰り返してデータをシートに書き込んでいるようです。大量のデータがある場合、これは悪い考えです。一度に書き込むことができるはずです。

于 2012-04-28T16:34:24.977 に答える