オーダーメイド栄養価計算シート生成サービス Nucalgen について

2021/06/04 8:14
オーダーメイド栄養価計算シート生成サービス Nucalgen を公開しました。
この CGI のバックで動かしている Excel ファイル生成プログラムは、 Java で書きました。
ソースコードは GitWeb で公開しています。
コンパイル済みの JAR ファイルはこちら です。この JAR ファイルには、The Apache Software Foundation による Apache POI, Commons , log4j, その他関連するライブラリの JAR ファイル群が組み込まれています。


実行方法の例は次の通りです。
java -jar nucalgen.jar -std-food-comp-table 20201225-mxt_kagsei-mext_01110_012.xlsx [-use-processed-table] -columns columns.xml  -output output.xlsx  -lines 20 -bright-colored-vegetables-list bright-colored-vegetables.xml [-with-pfc-balance] [-with-group-sum] [-set-protect]
-std-food-comp-table <filename>必須日本食品標準成分表 Excel ファイル
-use-processed-table任意日本食品標準成分表 Excel ファイルの加工をしない
-columns <filename>必須列定義ファイル
-output <filename>必須出力ファイル
-lines <n>必須行数
-bright-colored-vegetables-list <filename>必須緑黄色野菜定義ファイル
-with-pfc-balance任意「PFCバランス」欄を生成する (列定義ファイルで「たんぱく質」「脂質」「炭水化物」の出力が必須です)
-with-group-sum任意「食品群別摂取量」欄を生成する (列定義ファイルで「食品群」「緑黄色野菜」の出力が必須です)
-set-protect任意入力可能セル(「食品番号」「摂取量」)以外のセルをロックする


列定義ファイルの例は次の通りです → columns_main-and-fatty-acid.xml
抜粋→
<?xml version="1.0" encoding="UTF-8" ?>
<nucalgen-root>
	<cols>
		<column>
			<no>101</no>
			<table>成分表</table>
			<name>REFUSE</name>
			<disp_name>廃棄率</disp_name>
			<unit>%</unit>
			<format>0</format>
			<use_raw_value>TRUE</use_raw_value>
			<use_sum>FALSE</use_sum>
		</column>
		<column>
			<no>2102</no>
			<table>成分表</table>
			<disp_name>(エネルギー計算)脂質</disp_name>
			<alias>F_ENG</alias>
			<formula>IF(F_TG=0,F,F_TG)</formula>
			<unit>g</unit>
			<format>0.0</format>
			<use_raw_value>FALSE</use_raw_value>
			<use_sum>TRUE</use_sum>
		</column>
	</cols>
</nucalgen-root>
column タグの内側で、出力する各列の定義をします。
以下、column タグの子要素の説明です。

no の値に関係なく(これは無くても良い)、colums の出現順に、左側から出力されます。

name が日本食品標準成分表における成分識別子で(Nucalgen において独自に定義したものもあり)、
disp_name が出力される Excel ファイルにおける列名です。disp_name は自由ですが、 name は日本食品標準成分表と一致したものを使わないと正常に動作しなくなります。

alias で別名を付けられます。「計算式列(仮想列)」でこの別名を参照できるほか、合計行で「別名_SUM」の名前が用意され、これは「PFCバランス」欄出力機能で使用されます。

table が参照先の成分表が載っているシートの名前です。 ex) 「成分表」「脂肪酸成分表」

unit が単位、 format がフォーマット指定文字列です。小数第一位までの精度の列であれば、「0.0」と指定します。

use_raw_value が TRUE の列は、摂取量に応じた計算をしません(例:「廃棄率」「食品群」の様にグラムによって変化しない項目)。

use_sum が FALSE の列は、合計の計算をしません(例:「合計」する意味が無い「廃棄率」や「食品群」等)。

formula がある列は「計算式列(仮想列)」で、参照先の成分表とは別に栄養計算シート独自の列が定義できます。計算式を「IF(P_COMPO=0,P,P_COMPO)」の要領で記述します。同一行の他の列(セル)を参照するのに alias で定義した別名が使えます。


緑黄色野菜定義ファイルの例は こちら です。