大量データをExcelに貼り付ける

  実装テクニック, Excel VBO

コレクションに大量データを突っ込んで、Excel VBOのWrite Collectionで貼り付けようとしたらフリーズしました。。。
データ量は2000件くらいだったかと思います。

何とかフリーズしない方法がないか、考えてみました。

検証1. CSVにして貼り付ける

大量データをCSVデータ化した後、セルにペタッと貼り付けてはどうか?

今回は大量データのコレクションを用意する必要があったため、Excelに予め2000行のデータを用意しておき、コレクションとして読み込ませます。

image.png

コードステージに、コレクションからCSVに変換するコードを用意して実行したところ、OutOfMemoryで落ちました。断念。。。

Dim count As Long = 0       
For Each r As DataRow In Collection_In.Rows     
  Dim recordCsv As String   
  For Each c As DataColumn In Collection_In.Columns 
    If count = 0 Then
      recordCsv = recordcsv & c.ColumnName + ","
    Else
      recordCsv = recordcsv & r(c.ColumnName) + ","
    End If
  Next  
  result = result & recordCsv.Substring(0, recordCsv.length-1) & Environment.NewLine    
Next   
image.png

検証2. データを小分けにする

結果的に、この方法で最後まで実行することができました。
より速い方法はありそうですが、取り急ぎフリーズせずに処理を完遂できたのでOKとします(笑)

入力

image.png

オブジェクト全体像

Inputの「分割行数」で設定した行数単位でExcelに貼り付けていきます。

ExcelVBOの「Go To Next Empty Cell Down」は空セルを上から探していくアクションです。

値が入っているセルのうち、最も右下のセルを取得してしまいます。なので、A列に修正する処理を入れて列を固定するようにしています。

その他、細かい実装はGitHubにアップしているサンプルをご覧下さい。

サンプル

https://github.com/falcslab/blueprism/tree/collection
BPA オブジェクト – Excelにコレクションを貼り付ける.xml

LEAVE A COMMENT

CAPTCHA