繰り返しグループ: Repeating Group の基本的な使い方: 表をRepeating Group: 繰り返しグループ を使って読み取る - FlexiLayout

質問

表をRepeating Group: 繰り返しグループ を使って読み取る方法を教えてください。

回答

Table: 表 は 基本的に、Repeating Group: 繰り返しグループでも読み取ることができます。

それでは全てRepeating Group: 繰り返しグループで読み取れば良いのではないかというとそうではありません。

Table: 表 には次のようなメリットがあります。

  • ページをまたぐ表を自動的に続けて読み取ることができる。
  • ページをまたぐ表のヘッダ行をある程度、自動的に読み飛ばすことができる。
  • 表の末尾が空行ばかりの場合、空行は自動的に無視して読み取りを止めてくれる。
  • ...など。

しかし、表の形をしているのに、Table: 表で上手く読み取れない場合もあります。次のような場合です。

  • 行の内容に空の行があったりするが、そこで、表の内容は終わらず、下の方の行にレコードの続きがある。
  • 行の中身の文字が上下左右の罫線に近すぎたり、行同士の距離が近すぎて、行が上手く一行ずつ読み取れない。
  • ...など。

このような場合は、Repeating Group: 繰り返しグループで表を読み取るという方法を考えても良いかもしれません。Table: 表で読み取れない表も Repeating Group: 繰り返しグループを使用すれば、読み取れる可能性は飛躍的に向上します。ただし、上述のようなTable: 表ならではの自動機能は失ってしまいますが、何らかの方法でカバーできることが多いです。

下図のような典型的な構造の表をRepeating Group: 繰り返しグループ で読み取る手順例を紹介します。

360011073820_1.png

ある一定のパターンを持った繰り返しの範囲 ( 表の場合、「行」が繰り返される範囲 ) を Separator : 区切り線などで明確に指定します*。

*上図の表では、表の囲み線の中のヘッダより下側、ということになります。

*表を囲む線の内側

360011073820_2.png

*Separator: 区切り線を頼りに範囲を絞る。

360011073820_3.png

*実際に繰り返す部分は、ヘッダの線より下

360012325959_4.png

 *繰り返しする範囲は、表のヘッダより下であることを指定する。

360012325959_5.png

Repeating Group: 繰り返しグループの中に、繰り返しの「基本となる要素」の関係性を設定します。

例では、行の下側の線: Separator: 区切り線 が

  • ヘッダ行の線より下側
  • ページ最も上側に近い (ページの上辺)

であることを指定しています。

360012325959_6.png

 この指定を行って「合致: Match」を行いますと、自動的に繰り返しの基本となる要素の繰り返しが下図のように生成されます。

*hSp_Row_bottom1, 2, 3....N のようにデフォルトでは一つ前の要素に重ならないように、設定に沿った繰り返しの要素の取得が設定した繰り返しの範囲で行われる。

 360012325959_7.png

元々取得したい各行は、これら各行の下側の各線  hSp_Row_bottom1, 2, 3....N の上側なので、そのように指定します。

360012325959_8.png

上記で、読み取りたい部分が、基本となる部分、各行の下側の各線  hSp_Row_bottom1, 2, 3....N  の上側であることが設定できますが、それだけでは、「どこより下側か」がわかりません。繰り返しグループで便利なのは、 Repeating Group: 繰り返しグループ には特殊なインスタンスがあり、このような表形式の読み取りでは、下図のような設定が可能なことです*。

*上の設定とほとんど同じですが、注意するのは、行の下側の各線  hSp_Row_bottom1, 2, 3....N LastFound の 下側であると指定する点です。

360012325959_9.png

LastFound とは、 行の下側の各線  hSp_Row_bottom1, 2, 3....N  の繰り返しで例を挙げれば、
行の下側の各線  hSp_Row_bottom1, 2, 3....N CurrentInstance (デフォルト)であるとすれば、LastFoundその一つ前(最後ではありません)、行の下側の各線  hSp_Row_bottom0(無), 1, 2....N-1  であるということです。

例:

行の下側の各線 でCurrentInstanceが hSp_Row_bottom 2 の LastFound は   hSp_Row_bottom1

行の下側の各線 でCurrentInstance hSp_Row_bottom 3 LastFound は   hSp_Row_bottom2

このように、繰り返しのパターンを設定すると、各行を下図のように取得できるようになります。

* FlexiLayout上で各行とその要素を取得した例:

360012325959_10.png

FlexiCapture上での読み取り結果例:

360012325959_11.png

詳しくは下のリンクからご入手できるサンプルプロジェクトをご覧ください。

*ご覧になるには、バージョン12.0.2.3118以上の FlexiCaptureが必要です。

追加情報

他にご質問がございましたら、リクエストを送信してください

コメント

0件のコメント

サインインしてコメントを残してください。