「付加行」機能 実装(いちおう)完了。
[nucalgen] / nucalgen / src / main / java / jp / satomichan / nucalgen / Nucalgen.java
index b6065c9262bb8df7a7656526906b157076dfbe3a..2cf039ed8b4619afadd7093d4c9785f84c8c3d10 100644 (file)
@@ -4,7 +4,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -25,7 +24,6 @@ import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
 
 import jp.satomichan.nucalgen.addition.AcCell;
-import jp.satomichan.nucalgen.addition.AcCellType;
 import jp.satomichan.nucalgen.addition.AcRow;
 import jp.satomichan.nucalgen.addition.AdditionConfig;
 import jp.satomichan.nucalgen.addition.AdditionUtil;
@@ -41,8 +39,6 @@ public class Nucalgen {
                options.addOption(Option.builder("o").required().hasArg().longOpt("output").build());
                options.addOption(Option.builder("l").required().hasArg().longOpt("lines").build());
                options.addOption(Option.builder("add").hasArgs().longOpt("addition").build());
-
-               options.addOption(Option.builder("groupsum").longOpt("with-group-sum").build());
                options.addOption(Option.builder("bright").hasArg().longOpt("bright-colored-vegetables-list").build());
                options.addOption(Option.builder("protect").longOpt("set-protect").build());
                options.addOption(Option.builder("processed").longOpt("use-processed-table").build());
@@ -164,7 +160,6 @@ public class Nucalgen {
                                        if(aColumn.isUseSum()) {
                                                String sumArea = new CellReference(rowIndex, colIndex, true, true).formatAsString();
                                                namedAreaMap.put("SUM_" + aColumn.getAlias(), sumArea);
-                                               //System.out.println("SUM_" + aColumn.getAlias() + " --- " +  sumArea);
                                        }
                                }
 
@@ -185,12 +180,6 @@ public class Nucalgen {
                                }
                        }
 
-                       //「食品群別摂取量」出力
-                       if(cmd.hasOption("with-group-sum")) {
-                               rowIndex += 3;
-                               rowIndex = generateGroupSum(calcSheet, csPool, rowIndex, namedAreaMap);
-                       }
-
 
                        //未使用表シート削除
                        for(int si = outputWorkbook.getNumberOfSheets() - 1 ; si >= 1 ; si--) {
@@ -221,52 +210,12 @@ public class Nucalgen {
        }
 
 
-        //群別摂取量
-       private static int generateGroupSum(Sheet calcSheet, CellStylePool csPool, int rowIndex, Map<String,String> _namedAreaMap) {
-
-               List<String> groupName = Arrays.asList("0", "穀類", "いも及びでん粉類", "砂糖及び甘味類", "豆類",
-                               "種実類", "野菜類", "果実類", "きのこ類", "藻類", "魚介類", "肉類", "卵類", "乳類",
-                               "油脂類", "菓子類", "し好飲料類", "調味料及び香辛料類", "調理加工食品類");
-
-
-
-               Row groupRow = calcSheet.createRow(rowIndex);
-               groupRow.createCell(1).setCellValue("食品群");
-               groupRow.createCell(3).setCellValue("摂取量(g)");
-               rowIndex++;
-
-               for(int i = 1; i <= 18; i++,rowIndex++) {
-                       Row thisRow = calcSheet.createRow(rowIndex);
-                       thisRow.createCell(1).setCellValue(i);
-                       thisRow.createCell(2).setCellValue(groupName.get(i));
-                       Cell cCell = thisRow.createCell(3);
-                       cCell.setCellStyle(csPool.getCellStyle(""));
-                       //cCell.setCellFormula("SUMIF(AREA_GROUP, " + i + ", AREA_INTAKE)");
-                       cCell.setCellFormula("SUMIF(" + _namedAreaMap.get("AREA_GROUP") + ", " + i + ", " + _namedAreaMap.get("AREA_INTAKE") + ")");
-
-                       if(i == 6) {
-                               rowIndex++;
-                               thisRow = calcSheet.createRow(rowIndex);
-                               thisRow.createCell(2).setCellValue("うち 緑黄色野菜");
-                               Cell bcvCell = thisRow.createCell(3);
-                               bcvCell.setCellStyle(csPool.getCellStyle("0"));
-                               //bcvCell.setCellFormula("SUMIF(AREA_BRIGHT_COLORED_VEGETABLE, 1, AREA_INTAKE)");
-                               bcvCell.setCellFormula("SUMIF(" + _namedAreaMap.get("AREA_BRIGHT_COLORED_VEGETABLE") + ", 1, " + _namedAreaMap.get("AREA_INTAKE") + ")");
-                       }
-
-
-               }
-
-               return rowIndex;
-       }
 
 
        //「付加行」生成
        private static int generateAddition(String fileName, Sheet calcSheet, CellStylePool csPool, int rowIndex,
                                                                                                                                                                Map<String,String> _namedAreaMap) {
 
-               System.out.println("ADDITION : " + fileName);
-
                AdditionConfig ac = AdditionUtil.additionFileReader(new File(fileName));
                for(AcRow acRow : ac.getRows()) { //行ごとのループ
                        Row thisRow = calcSheet.createRow(rowIndex);
@@ -280,8 +229,9 @@ public class Nucalgen {
                                        _namedAreaMap.put(acCell.getAlias(), new CellReference(rowIndex, colIndex, true, true).formatAsString());
                                }
                                
-                               if(acCell.getCellType() == AcCellType.FORMULA) {
-                                       String formula = "<" + acCell.getValue() + ">";
+                               //formula 計算式
+                               if(acCell.getFormula() != null){
+                                       String formula = "<" + acCell.getFormula() + ">";
                                        for(Entry<String, String> keyValue : _namedAreaMap.entrySet()) {
                                                String k = keyValue.getKey();
                                                String v = keyValue.getValue();
@@ -291,8 +241,14 @@ public class Nucalgen {
                                                formula = formula.replaceAll(">$", "");
                                        }
                                        thisCell.setCellFormula(formula);
-                               } else {
+                               
+                               //value そのままの値
+                               } else if(acCell.getValue() != null) {
                                        thisCell.setCellValue(acCell.getValue());
+                               
+                               //formula でも value でもない
+                               } else {
+                                       //
                                }