--- /dev/null
+package jp.satomichan.nucalgen;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+
+public class MextStdFoodCompTable {
+ private String brightColoredVegetablesXmlFileName = "";
+ private List<String> brightColoredVegetableList = new ArrayList<String>();
+
+ MextStdFoodCompTable(String brightColoredVegetablesXmlFileName_){
+ this.brightColoredVegetablesXmlFileName = brightColoredVegetablesXmlFileName_;
+
+ try {
+ XMLConfiguration config = new XMLConfiguration(this.brightColoredVegetablesXmlFileName);
+ List<Object> vegetableNames = config.getList("bright-colored-vegetable.name");
+ for(Object vegeObj : vegetableNames) {
+ this.brightColoredVegetableList.add(vegeObj.toString());
+ }
+
+ } catch (ConfigurationException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+
+ //変換
+ void processInto(Workbook outputWorkbook) {
+ Sheet foodComposithonSheet = outputWorkbook.cloneSheet(0);
+ outputWorkbook.setSheetName(18, "成分表");
+ outputWorkbook.setSheetOrder("成分表", 0);
+ //Sheet foodComposithonSheet = outputWorkbook.createSheet("成分表");
+
+ //「成分識別子」行
+ Row idRow = foodComposithonSheet.getRow(10);
+ for(int i = 4; i <= 61; i++) {
+ Cell idCell = idRow.getCell(i);
+ idCell.setCellValue(idCell.toString().replaceAll(" ", ""));
+ }
+ idRow.createCell(62).setCellValue("GROUP");
+ idRow.createCell(63).setCellValue("BRIGHT_COLORED_VEGETABLE");
+
+ int compSheetRowIndex = 11;
+
+ //18 の食品群ごとの処理
+ for(int group = 1; group <= 18; group++) {
+ Sheet thisSheet = outputWorkbook.getSheetAt(group);
+
+ int rowCount = 0;
+ for (Row thisRow : thisSheet) {
+ rowCount++;
+ if(rowCount < 12) {continue;}
+
+ Row compRow = foodComposithonSheet.createRow(compSheetRowIndex);
+
+ for (int cellCount = 1; cellCount <= 61; cellCount++) {
+ Cell thisCell = thisRow.getCell(cellCount);
+
+ String cellString = thisCell.toString();
+
+ cellString = cellString.replaceAll("\\(", "");
+ cellString = cellString.replaceAll("\\)", "");
+ cellString = cellString.replaceAll("-", "0");
+ cellString = cellString.replaceAll("Tr", "0");
+
+ //セル値・書式 コピー
+ //Cell compCell = foodComposithonSheet.getRow(compSheetRowIndex).getCell(cellCount);
+ Cell compCell = compRow.createCell(cellCount);
+ compCell.setCellValue(cellString);
+ compCell.setCellStyle(thisCell.getCellStyle());
+ compCell.setCellType(thisCell.getCellTypeEnum());
+
+ if(cellString.matches("^[\\d\\.]+$")) {
+ compCell.setCellValue(Double.parseDouble(cellString));
+ CellStyle aCellStyle = compCell.getCellStyle();
+ aCellStyle.setDataFormat((short) 0);
+ compCell.setCellStyle(aCellStyle);
+ }
+
+
+ } //CELL
+
+ //食品群(1~18)書き込み
+ compRow.createCell(62).setCellValue(group);
+
+
+ //緑黄色野菜か?
+ if(brightColoredVegetablesXmlFileName.length() > 0) {
+ boolean isBrightColored = false;
+ String foodName = thisRow.getCell(3).getStringCellValue();
+ for(String aBright : this.brightColoredVegetableList) {
+ if(foodName.matches(aBright + ".*")) {
+ isBrightColored = true;
+ break;
+ }
+ }
+
+ if(isBrightColored) {
+ compRow.createCell(63).setCellValue(1);
+ }
+ }
+
+
+ compSheetRowIndex++;
+
+ } //ROW
+
+ } //GROUP
+
+ //元の表 削除
+ for(int i = 18; i > 0; i--) {
+ outputWorkbook.removeSheetAt(i);
+ }
+ }
+
+
+
+}