2011-01-27 29 views
13

これで、Excelのinteropライブラリでセルの値を設定しようとしています。私は次のようにそれをすることができます:Excel interopを使用してセルの値を設定します

sheet.Cells[row, col] = value; 

しかし、私は何を設定しているのですか?だから私はこのルートに行くことを試みている:

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

コードは実行されますが、データはセルに入れられません。私が行方不明になっていることに関する提案はありますか?ありがとう!

+0

私たちは何匹の細胞について話していますか? –

+1

"value"に値はありますか?それはセルに収まるように右の型の "値"ですか? –

答えて

19

画面の更新を無効にしている場合(Application.ScreenUpdating = false)、最初の方法は、妥当な(多くの不合理な)量のセルに対して正常に動作するはずです。行と列によるC#アクセスを使用してセルを設定する方法についても説明しているKnowledgebase Article

16

一度に1つのセルを設定して配列を繰り返し処理するのではなく、一度にすべての値を設定しようとしましたか?そうすれば、1つのセルにつき1回ではなく、1回だけCOM境界でデータを渡す必要があります。

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をオフにしてください。また、コピー処理が完了するまで手動で計算を設定することを検討してください。

+0

うーん、私はこれを試して、それは働いたが、いくつかのセルが行全体にマージされており、値を適切に配置していない。データが混在しているのでオブジェクト配列を使用していますが、いくつかの小数点はいくつかの文字列です。 – Arthurdent510

+4

多次元配列を使用して範囲を設定することもできます。 –

-5


[excelWorksheet].Cells[1, 1] = "[String you want]"; 
1

シンプルなソリューションを試したが、ここで、あなたはnugetコンソールに足すことにより、パッケージMicrosoft.Office.Interop.Excelをインストールする必要がありますしてください

インストール・パッケージMicrosoft.Office.Interop.Excel

//test excel file 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 

     Workbook workbook = excel.Workbooks.Open(System.Windows.Forms.Application.StartupPath + "/TrainedFaces/AttendanceLog.xlsx", ReadOnly: false, Editable: true); 
     Worksheet worksheet = workbook.Worksheets.Item[1] as Worksheet; 
     if (worksheet == null) 
      return; 

     var abc = worksheet.Cells[2, 1].Value; 
     Range row1 = worksheet.Rows.Cells[1, 1]; 
     Range row2 = worksheet.Rows.Cells[2, 1]; 

     row1.Value = "Test100"; 
     row2.Value = "Test200"; 


     excel.Application.ActiveWorkbook.Save(); 
     excel.Application.Quit(); 
     excel.Quit(); 
関連する問題