Designer:CSVファイルの1行目(ヘッダ項目行)を切り出す


他システムから連携された次のようなCSVファイルがあったとします。

INPUT\in.csv

プロジェクト,金額(売上),金額(原価)
プロジェクトA,1000,500
プロジェクトA,3300,2000
プロジェクトA,1500,800
プロジェクトB,2200,1000
プロジェクトB,2500,1300
プロジェクトC,1500,800
プロジェクトC,3200,2000
プロジェクトC,2800,1800

このCSVファイルを処理し(プロジェクトごとの金額集計など)、同形のヘッダ項目行を付けて他システムに戻す要件がある場合、 ちょっとやっかいな問題が起こります。

このCSVファイルを、「変換(CSV→抽出データ)」手順でそのままXMLファイルに変換しようとすると、項目名「金額(売上)」、「金額(原価)」に含まれるカッコ記号が、 XML項目名としては不正な文字のため、変換時にエラーになってしまいます。

このため、いくつかの手順で調整する手間が増えるため、入力CSVファイルからヘッダ項目行(1行目)を次のようにファイルに切り出し、最後に集計結果の先頭行に付加できたら、と思ったことはありませんか?

WORK\head.csv

プロジェクト,金額(売上),金額(原価)

 ここでは、「外部アプリの実行」手順でpowershellを使い、CSVファイルの1行目を切り出す設定例をご紹介します。

f:id:xoblos:20200211100255p:plain

%ComSpec%

/c powershell (Get-Content "INPUT\in.csv")[0..0] > "WORK\head.csv"

 

Get-Content コマンドはテキストファイルの内容を出力するコマンドで、[開始行番号..最終行番号] を付加することにより、出力行の範囲を選択することができます。行番号は0番始まりなので、先頭行(1行目)の行番号は0番となります。

 

Get-Content コマンドは、DOSプロンプトの type コマンドと同等の機能なので、type の方が慣れている場合は、以下のようにアライアスである type コマンドでも同様に設定できます。

f:id:xoblos:20200211101717p:plain

部門別業務例と関連キーワード

新しいカテゴリー「適用分野と適用業務例」を新設しました。

建築・建設関連の例えで言うなら、既存のクライアント(デザイナ)や制御シート、コントローラー(corabo)に関するブログ記事が、xoBlos(ゾブロス)の建材・工法に関する記事だとすると、 カテゴリー「適用分野と適用業務例」では、家を建て、部屋を作り、家を街に発展させていくようなブログ記事を集めていく予定です。

最初の記事では、企業における「部門別業務例と関連キーワード」をまとめた資料を公開します。

企業の中のどんな部門にxoBlosが適用され、どんな業務で使われているかの参考資料としてご覧ください。

資料へのリンク

XOBMAP 部門別業務例と関連キーワード

XOBMAP 経営企画部門

XOBMAP 財務・経理部門

corabo:xoBlos サーバの再起動

サーバ "マシン" の再起動ではない!

corabo から業務を実行する際、稼動前提である xoBlos サーバ。メモリの解放等で、再起動が必要なケースもあります。終了は、以下の方法になります。

f:id:xoblos:20200130171012p:plain

起動は、以下の方法になります。製品をインストールしたドライブに合わせて、対象のアプリケーションを探し出しましょう。「xoBlosServerHost.exe.config」は別物です。拡張子を表示していない方は要注意を!

f:id:xoblos:20200130171019p:plain

corabo:アップロードファイルの取り扱い

業務が紐付いているアップロード画面

アップロード画面に業務を紐付けるということは、「アップロードファイルが業務実行の合図」か「業務でアップロードしたファイルを取り扱いたい」のいずれかの要件があるということになります。‥‥前者は殆ど考えられないかもしれませんが。

f:id:xoblos:20200114114038p:plain

業務実行中にアップロードしたファイルを参照するには、システム変数を活用します。名称(意味)が似ていますが、それぞれの保持している値と役割は明確に分かれていますので、ご注意ください。また corabo との連携になりますので、『d.実行時に入力しますか?』項を「はい」にすることも、お忘れなく。

SYS_INPUTFILE  ‥‥ アップロードしたファイルを処理中に自動保管しておく一時フォルダの絶対パス+ファイル名
SYS_UPLOADNAME ‥‥ 業務が正常終了した際に最終的にアップロード先へ置かれるファイル名

f:id:xoblos:20200114114045p:plain

上図のように、一時フォルダへ一旦コピーすると取り扱い易いです。一時フォルダは「SYS_WKDIR」を活用するのも良いですね。「SYS_INPUTFILE」はパス+ファイル名の内容を持っていますので、前後に別途パスやファイル名を表記する必要がありません。そもそも決められた場所とアップロードファイル名を持っている訳ですから。「SYS_UPLOADNAME」はファイル名称を文字列で持っています。アップロードされなければ決定しない、等の考えはありません。単純にアップロードした場合のファイル名を合わせているという考え方になりますね。

Designer:改行記号以外の制御コード記号も削除する

前回の記事で、改行コード記号を削除する方法を記載しました。

Designer:改行記号を抜く
http://xoblos.hatenablog.jp/entry/2019/12/16/153254

この指定で項目中の改行記号を削除することができますが、他システムからの連携データの中に、16進コード08(バックスペース記号)などの見えない制御コード記号が含まれる場合は削除されません。

改行記号を含む、見えない制御コード記号をすべて削除するには、下記のようにExcelの CLEAN 関数を使用します。

・「Excel表から抽出」手順 → XMLXML → 「Excel表を生成」手順
 ひな形シートに CLEAN 関数を入れて制御記号を削除します。

 A  B
 という2列に読み込む場合、
         C       D
         =CLEAN(A2)  =CLEAN(B2)

・「Excel表から抽出」手順 → XML
 上記の例の場合、C、D を抽出します。

・「変換(抽出データ→CSV)」手順で XMLCSV

Designer:改行記号を抜く

目標(GOAL)

Excelシートのセルデータの中に改行記号が含まれ、これを出力時に取り去りたいときがあります。改行記号は、備考やコメント欄として使用されるセルに入っていることが多く、後々、CSVファイルなどへ出力するときに邪魔になる場合があります。

また、Windows以外のプラットフォーム(LinuxMac OS など)から連携されたデータを処理する場合、データ中の改行コードが Windowsの場合と異なることがあり、これも意識せず改行記号を取り去りたいというニーズもあります。

Excel表から抽出」手順の設定

[出力項目の設定]-[改行記号を抜く] を "yes" にして、改行記号を削除したい項目に設定します。

この設定により、改行コードが削除されますが、下記のように、CR(キャリッジリターン)のみ、 LF(ラインフィード)のみの場合も、CR+LF(Windows)の場合も、意識することなく削除できます。

プラットフォームによる改行コードの違い

Mac OS    CR(キャリッジリターン)  16進コード 0d

Linux     LF(ラインフィード)     16進コード 0a

Windows    CR+LF             16進コード 0d0a

Designer:8桁数値を日付書式に

2千万ですか?

日付を数値のみで表現することはあります。本日なら「20191212」ですね。我々人間は、一見でこれを日付と判断出来るものですが‥‥。特別な設定や専用の指定法とかが無い限り、いずれのシステムも共通で「20191212」は『2019万1212個?円?‥‥それともそういうコード??』が、精々の扱いになります。(無論、本質は絶対に理解出来ません。)

f:id:xoblos:20191212152044p:plain

xoBlos の抽出と生成は、文字列の切り出しと連結が行えますので、"8桁固定" という要件が覆されなければ設定は容易なものです。抽出は、自身の項目を加工する面で『対象セル』が共通のセル番地になるところと‥‥加工の材料は XML に不要であることから、キーワード『非出力項目』で XML にタグを出力させないところがポイントです。生成は、加工する内容分の変数項目を用意するところと‥‥加工の材料は帳票上に出力させないことから、キーワード『セット先セル』を空欄にするところがポイントです。