2012年2月22日水曜日

C#でExcel操作の注意

C#やVB.NETからOffice.Interop.Excelを使って、Excelを操作できる。
ただ操作するにはいくつか注意点があるので、記載。




1.生成したオブジェクトは都度、System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)で開放する。都度でなくてもよいが、使いった回数分全て開放しなければプロセスが残る


2.ピリオドを2つ繋げるような使い方をすると、開放できなくなるので、必ず、オブジェクトを生成してから利用する
  例:Excel.Range range = ~;
    range.font.ColorIndex = 3; ←開放できない
    下記のようにする.
    Excel.Range range = ~;
    EXCEL.Font rfont = range.Font;
         rfont.ColorIndex = 3;

3.Rangeで範囲指定したものをDeleteすると、大量のメモリを消費する上に、遅い。行指定するべき。
  例:range.sheet.getrange("A1:Z100")
    range.Delete(Type.Missing);
    は、ダメ。
    削除はできるだけ行単位で行うようにする

    range.sheet.getrange("1:100")
    range.Delete(Type.Missing);


とりあえず、3つ。ほかは思い出したら追記するかも。

0 件のコメント:

コメントを投稿