19

わかりましたので、Excel 相互運用ライブラリを使用してセルの値を設定しようとしています。私は以下でそれを行うことができます:

sheet.Cells[row, col] = value;

しかし、私が設定している数に対しては非常に遅いです。だから私はこのルートに行こうとしています:

Range excelRange = sheet.UsedRange;
excelRange.Cells.set_Item(row, col, value);

コードは実行されますが、セルにデータが入力されません。私が欠けているものについて何か提案はありますか? ありがとう!

4

4 に答える 4

24

画面の更新を無効にしている場合、最初の方法は、妥当な(および不合理な)量のセルに対して正常に機能するはずです(Application.ScreenUpdating = false)。行と列によるC#アクセスを使用してセルを設定する方法についても説明しているナレッジベースの記事。

于 2011-01-27T00:20:58.613 に答える
21

配列を反復処理して一度に1つのセルを設定するのではなく、すべての値を一度に設定しようとしましたか?そうすれば、セルごとに1回ではなく、COM境界を越えてデータを1回渡すだけで済みます。

Excelはこの点で非常に柔軟性があります。次のことを試してください。

int[] intArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Range rng = excelApp.get_Range("A1", "J1");
rng.Value = intArray; 

これは、設定する各セルを反復処理するよりも高速である必要があります。

それ以外は、Andyが提案するようにScreenUpdatedをオフにし、コピープロセスが完了するまで計算を手動に設定することも検討してください。

于 2011-01-27T09:47:44.473 に答える
-7

してみてください

[excelWorksheet].Cells[1, 1] = "[String you want]";
于 2014-08-13T07:11:52.203 に答える