RACCOONで帳票形式のExcelファイルからCSV形式の伝票ファイルを作成する

# はじめに
[データハンドリングプラットフォーム RACCOON](https://www.dal.co.jp/products/dhp/raccoon/outline.html)を使って、帳票形式のExcelファイルからCSV形式の伝票ファイルを作成します。

## 環境
- [データハンドリングプラットフォーム RACCOON](https://www.dal.co.jp/products/dhp/raccoon/outline.html)
- Windows Server 2019
- Java 1.8.0_202


## 入力フォーマット（Excel）
入力フォーマットは、帳票形式のExcelで行方向のテーブルを含みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/7874e769-8583-6b1a-b9c8-ff435451fbd1.png)


## 出力フォーマット（CSV）
出力フォーマットはヘッダ・明細形式のCSVファイルを作成します。

| 項目       |説明 |
|:-----------------|:------------------|
|フォーマット|CSV（指定区切り子）|
|レコード区切り|改行区切り|
|項目区切り|カンマ「,」|

出力イメージはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/99e7c7c6-50d2-3be9-d223-9a55b8bc57dc.png)

## 入力／出力フォーマットの対応関係
入力フォーマット、出力フォーマットのデータの対応関係は以下のようなイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/8ff7cbde-76c9-a9fd-d04d-89eb7a761231.png)

# 開発手順
RACCOONのGUIの開発クライアント **Developer Studio** を使って変換処理の作成を進めます。

概ね以下のような手順になります。
**1. 変換フローを設定**
　・入力フォーマット、出力フォーマットの関連性を全体の処理フローとして定義します。
**2. 抽出処理を設定**
　・抽出元フォーマットのデータ構造（レコード、項目など）を定義します。
**3. 格納処理を設定**
　・格納先フォーマットのデータ構造（レコード、項目など）を定義します。
**4. 抽出処理と格納処理のデータ構造をマッピング**
　・抽出元、格納先のデータ構造の対応関係を定義します。
**5. 変換実行**
　・作成した変換処理を実行します。

## 変換フローを設定する
1. 今回の入力フォーマットは Excel なので、抽出処理のパレットから[Excel]を選択してキャンバス上にドラッグ・アンド・ドロップで配置します。 
2. 同様に出力フォーマットは CSV なので、格納処理パレットから[指定区切り子]を選択してキャンバス上にドラッグ・アンド・ドロップで配置します。
3. 抽出処理（Excel）のボックスと格納処理（指定区切り子）のボックスをコネクタで結びます。

これで入力フォーマット（Excel）と出力フォーマット（CSV）の関連性の定義が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/29abca18-a7d7-db74-2259-c84b9443fe21.png)


## 抽出処理を設定する
抽出元フォーマットのExcelのデータ構造を定義します。
Excelのデータ構造はExcelインポート機能を使って自動的に生成できます。

1. 変換フローに配置した抽出処理（Excel）を右クリックして［移動－メッセージ］を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/e5052605-7f29-dbf9-1f16-ac9be1ae8fe1.png)

2. データ構造の作成画面が開きます。ワークシート「NewSheet1」を右クリックし、［Excelインポート］－［配下］を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/78b037ec-c7ec-ff22-4965-49833f7f9cbe.png)

3. Excelインポート ウィザード画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/ad0618de-f18c-4891-8f8c-f4a30fb3cb7c.png)

4. Excelファイルを開いて取り込みたいテーブルを範囲選択して、Excelアドイン（RACCOONツール）の［クリップボードへコピー］をクリックします。ここでは見出し付きのテーブルを範囲選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/6bc378e9-be44-8e64-11b2-1f2e6329e092.png)

5. ［クリップボードの取り込み］をクリックして、見出し付きの行テーブルとしてインポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/c8531a34-e9ba-13d5-f5a2-b2d19d97f09c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/7d4da38f-195a-1319-2f1d-dc98278ab83c.png)

6. Excel上で選択した範囲のデータ構造（見出し行とデータ行）が自動生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/e8e2fdea-b242-e2a5-a6c1-3275dd5caf1c.png)


## 格納処理を設定する
格納先フォーマットのCSVのデータ構造を定義します。

1. 変換フローに配置した格納処理（指定区切り子）を右クリックして［移動－メッセージ］を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/f071c9ed-96b3-edf2-37f5-05a4e6726b8b.png)

2. データ構造の作成画面が開きます。伝票ファイルのレコード構成および、各レコードの項目を定義します。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/69fb1356-c370-cf25-f017-5bd9b51ef252.png)



## データ構造をマッピングする
抽出元、格納先のデータ構造の対応関係を定義します。

1. 変換フローに配置した格納処理（指定区切り子）を右クリックして［移動－マッピング］を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/a1edf26e-3e64-af50-0c5e-a00cb6fabdf0.png)
2. 抽出処理と格納処理のデータ構造を対応付け（マッピング）します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/0479ea4d-4676-c66f-302f-22b7de7bc206.png)
3. 抽出側の要素を格納側の要素にドラッグ・アンド・ドロップする操作で対応付けできます。名称が同じ、位置が同じ要素は自動マッピング機能を使って自動的に対応付けができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/59ed6e5c-9933-eb1f-ac49-b8ecc1d2e5ce.png)



## 変換実行する
作成した変換処理を実行します。
変換処理はコマンドでも実行できますが、ここではテストとして開発クライアント上で実行します。

1. 変換構成ダイアログから入力ファイル、出力ファイルを指定して［変換実行］をクリックして実行します。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/cd7f305f-a77d-b388-8399-c945a07dfe61.png)
2. 変換処理が完了すると、変換実行ビューから処理概要を確認できます。
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/d47e86fd-0aef-3159-1b07-9a18287c6bee.png)
出力ファイルを確認。
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615823/a1f35c8c-1acb-0c04-c775-791fd95bf89f.png)


## まとめ
[データハンドリングプラットフォーム RACCOON](https://www.dal.co.jp/products/dhp/raccoon/outline.html)を使って、帳票形式のExcelファイルからCSV形式の伝票ファイルを作成する手順をまとめてみました。
RACCOONでは行テーブル、列テーブル、マトリクス型など様々な形式のExcelデータの変換がGUIを使ってお手軽に開発できます。