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

2022/03/08 3:45
オーダーメイド栄養価計算シート生成サービス Nucalgen を公開しました。
この CGI のバックで動かしている Excel ファイル生成プログラムは、 Java で書きました。
ソースコードは GitWeb で公開しています。

ライセンス

Copyright 2020-2022 FUKUDA Satomi (https://satomichan.jp/)

Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and
limitations under the License.

実行方法の例

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 [-sheets 朝食 昼食 夕食 集計] [-addition addition.xml] [-set-protect]
-std-food-comp-table <filename>必須日本食品標準成分表 Excel ファイル
-use-processed-table任意日本食品標準成分表 Excel ファイルの加工をしない
-columns <filename>必須列定義ファイル
-output <filename>必須出力ファイル
-lines <n>必須行数
-bright-colored-vegetables-list <filename>必須緑黄色野菜定義ファイル
-sheets <sheet_name_1> <sheet_name_2> ... <sheet_name_n> <sheet_name_sum>任意(複数可)複数シート(食事区分+集計)を生成する
-addition <filename>任意(複数可)付加行構成ファイル
-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 が日本食品標準成分表における成分識別子(FAO/INFOODS が定める Tagname や、それに準じるもの)で(Nucalgen において独自に定義したものもあり)、
disp_name が出力される Excel ファイルにおける列名です。disp_name は自由ですが、 name は日本食品標準成分表と一致したものを使わないと正常に動作しなくなります。

alias で別名を付けられます。「仮想栄養成分」でこの別名を参照できます。また、食品ごとの栄養成分量行で「AREA_別名」(合計行のSUM関数の中となる範囲)、合計行で「SUM_別名」の名前が用意され、これは付加行出力機能で使用されます。

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

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

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

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

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


「-sheets」オプションの引数にはシート名(食事区分)を列挙します。最後に記述されたシート名が集計用のシート名になります。

緑黄色野菜定義ファイルの例は bright-colored-vegetables.xml です。

付加行構成ファイルの例は、 pfc-balance.xml(PFCバランス用)group-sum.xml(食品群別摂取量集計用) です。
formula タグの中では「AREA_別名」や「SUM_別名」「AREA_INTAKE」(摂取量列の範囲)でそれぞれの範囲を参照できます。