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つ。ほかは思い出したら追記するかも。
2012年2月22日水曜日
Access Schema.iniの作り方
AccessにC#などのプログラムでCSVファイル等をインポートするときに必要なSchema.ini。
昔のAccess(2000とか?)では、エクスポート時にWord Merge Fileとやらを指定すれば、勝手に生成されていたらしいけど、2010ではそんな出力形式が見当たらない・・・
いちいちテキスト開いて書き込んでいくのも面倒だし、生成用のExcelに項目打ち込んでいくのも面倒。
と思っていたら、Windowsの機能で作れることがわかった。
1.コントロールパネル→管理ツール→データソース(ODBC)
2.ファイルDNS→追加→Microsoft Access Text Driver(*.txt,,*.csv)
3.ODBCテキストセットアップで対象のcsvのあるフォルダを指定
4.オプションをクリックし、csvを選んで書式の定義
5.フォルダ内のcsv,txtが表示されるので、選んで列名の見出しをチェックして推量をクリック
6.列に内容が表示されるので、1つずつデータ型等を確認
7.OKを押して完了すると、指定したフォルダ内にschema.iniが生成されている
※schema.iniは上書きされるので注意
昔のAccess(2000とか?)では、エクスポート時にWord Merge Fileとやらを指定すれば、勝手に生成されていたらしいけど、2010ではそんな出力形式が見当たらない・・・
いちいちテキスト開いて書き込んでいくのも面倒だし、生成用のExcelに項目打ち込んでいくのも面倒。
と思っていたら、Windowsの機能で作れることがわかった。
1.コントロールパネル→管理ツール→データソース(ODBC)
2.ファイルDNS→追加→Microsoft Access Text Driver(*.txt,,*.csv)
3.ODBCテキストセットアップで対象のcsvのあるフォルダを指定
4.オプションをクリックし、csvを選んで書式の定義
5.フォルダ内のcsv,txtが表示されるので、選んで列名の見出しをチェックして推量をクリック
6.列に内容が表示されるので、1つずつデータ型等を確認
7.OKを押して完了すると、指定したフォルダ内にschema.iniが生成されている
※schema.iniは上書きされるので注意
登録:
投稿 (Atom)