Newer
Older
ExcelImport / src / com / tesr / OldMain.java
package com.tesr;

import org.apache.poi.ss.usermodel.*;

import javax.swing.*;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class OldMain {

    public static void main(String[] args) {
        try {
            // Variables
            //Optimizer myBasicOptimizer = new Optimizer();
            System.out.println("Optimizer instantiated...");

            // Select Excel File which the user wants to investigate regarding machine optimization potential
            // hier wieder ändern  String excelFileName = selectExcelFile();
            //hier wieder ändern   System.out.println("File via openFileDialog selected: " + excelFileName);

            // Read out data from excel sheet via Apache POI
            // hier wieder ändern   readExcelFileData(excelFileName);
            Sheet sheet = readExcelFileData("/Users/michel/Downloads/Project/ProductionSheet.xlsx");
            List<Row> rows = sortExcelFileData(sheet,19);

            // Optimize machine planning and scheduling
            //myBasicOptimizer.process();

            // Write optimized data back to excel sheet
            writeExcelFileData("/Users/michel/Downloads/Project/ProductionSheet NEU.xlsx", rows, 1);

            System.out.println("Optimization done.");
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }

    // Select Excel file which we want to read out and retrieve necessary machine data
    private static String selectExcelFile(){
        String strFilename = "";

        try {
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));

            int result = fileChooser.showOpenDialog(null);

            switch(result) {
                case JFileChooser.APPROVE_OPTION:
                    File selectedFile = fileChooser.getSelectedFile();

                    // user made a selection -> return selected file path
                    strFilename = selectedFile.toString();
                    break;

                case JFileChooser.CANCEL_OPTION:
                    // user made no selection -> shutdown application
                    System.out.println("No selection made. Shutting down application...");
                    System.exit(0);
                    break;

                default:
                    System.out.println("Something went wrong. Shutting down application...");
                    System.exit(0);
                    break;
            }
        } catch (Exception exFileSelection) {
            System.out.println("Error in selectExcelFile()");
            System.out.println("Error details: " + exFileSelection.toString());
        } finally {
            return strFilename;
        }
    }

    private static List<Row> sortExcelFileData(Sheet sheet, int sortColumn)
    {
        List<Row> rows = new ArrayList<>();
        try {

            for (int i = 1; i<sheet.getPhysicalNumberOfRows();i ++ )    // i = 2???? es werden keine 0-Zeilen erzeugt
            {
                rows.add(sheet.getRow(i)); //(new SortRow(sheet.getRow(i).getCell(19).getStringCellValue(), sheet.getRow(i)));
            }
            // ToDo: Sortieren bei Zahlenwerten?
            rows.sort((r1, r2) -> r1.getCell(sortColumn).getStringCellValue().compareTo(r2.getCell(sortColumn).getStringCellValue()));
        }
        catch (Exception exp) {
            System.out.println("Error in writeExcelFileData()");
            System.out.println("Error details: " + exp.toString());
        }
        return rows;
    }

    private static Sheet readExcelFileData(String fileName) {
        Sheet sheet = null;
        try {
            Workbook workbook = WorkbookFactory.create(new File(fileName));
            sheet = workbook.getSheetAt(1);
        } catch (Exception exReadExcelFile) {
            System.out.println("Error in readExcelFileData()");
            System.out.println("Error details: " + exReadExcelFile.toString());
        }
        return sheet;
    }

    private static void writeExcelFileData(String filename, List<Row> rows, int startRow){
        try {
            Workbook workbook = WorkbookFactory.create(new File("/Users/michel/Downloads/Project/ProductionSheet.xlsx"));
            Sheet sheet = workbook.getSheet("Input");
            for (int i = 0; i < rows.size(); i++)
            {
                Row row = sheet.getRow(rows.get(i).getRowNum());
                row.setRowNum(i + startRow);
                for (int x = 0; x < rows.get(i).getPhysicalNumberOfCells(); x++)
                {
                    if (rows.get(i).getCell(x).getCellType() == CellType.FORMULA)
                    {
                        String cellFormula = rows.get(i).getCell(x).getCellFormula();
                        String[] formulaSplitted = cellFormula.split("\\*");
                        for (int y = 0; y < formulaSplitted.length; y++) {
                            if (!formulaSplitted[y].matches("^[0-9]*$")) {
                                formulaSplitted[y] = formulaSplitted[y].replace(String.valueOf(rows.get(i).getRowNum() + 1), String.valueOf(i + startRow + 1));
                            }
                        }
                        row.createCell(x).setCellFormula(String.join("*", formulaSplitted));
                    }
                    else
                    {
                        System.out.println(rows.get(i).getCell(x).getCellType());
                    }
                }
            }
            try (FileOutputStream outputStream = new FileOutputStream(filename)) {
                workbook.write(outputStream);
            }
            System.out.println("Called writeExcelFileData()");
        } catch (Exception exWriteExcelFile) {
            System.out.println("Error in writeExcelFileData()");
            System.out.println("Error details: " + exWriteExcelFile.toString());
        }
    }
}