Example usage for org.apache.poi.xssf.usermodel XSSFSheet getRow

List of usage examples for org.apache.poi.xssf.usermodel XSSFSheet getRow

Introduction

In this page you can find the example usage for org.apache.poi.xssf.usermodel XSSFSheet getRow.

Prototype

@Override
public XSSFRow getRow(int rownum) 

Source Link

Document

Returns the logical row ( 0-based).

Usage

From source file:ExcelConverter.java

public List<ScheduleClass> Converter() throws FileNotFoundException, IOException {
    ArrayList<ScheduleClass> scheduleList = new ArrayList<>();

    FileInputStream fis = new FileInputStream(pathFile);

    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();

    CellRangeAddress add;/*w w  w .  j a va 2 s . c o  m*/
    int colNoIdx = 0;
    ArrayList<String> dosen = new ArrayList<>();
    ArrayList<Integer> idxDosen = new ArrayList<>();
    ArrayList<Integer> colDosen = new ArrayList<>();
    ArrayList<String> location = new ArrayList<>();
    int idxNumber = 0;
    ArrayList<Integer> locationIdx = new ArrayList<>();
    outerloop: for (int j = 0; j < sheet.getLastRowNum(); j++) {
        row = sheet.getRow(j);
        for (int f = 0; f < row.getLastCellNum(); f++) {
            Cell cell = row.getCell(j);
            if (cell.getStringCellValue().contains("No.")) {
                rowNoIdx = j;
                colNoIdx = cell.getColumnIndex();

                break outerloop;
            }
        }
    }
    outerloop2: for (int i = 0; i < sheet.getLastRowNum(); i++) {
        row = sheet.getRow(i);
        outerloop: for (int j = 0; j < row.getLastCellNum(); j++) {
            Cell cell = row.getCell(j);
            FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
            if (cell.getColumnIndex() == colNoIdx && i > rowNoIdx + 3
                    && evaluator.evaluate(cell).getCellType() != Cell.CELL_TYPE_NUMERIC) {
                i = sheet.getLastRowNum();
                break outerloop2;
            }

            if (cell.getRowIndex() > rowNoIdx + 1 && cell.getColumnIndex() == (colNoIdx + 1)) {
                String delims = "[,. ]";
                String[] sumary = cell.getStringCellValue().split(delims);
                for (int l = 0; l < sumary.length; l++) {
                    if (sumary[l].equalsIgnoreCase("Mrt")) {
                        sumary[l] = "3";
                    }
                }

                lc = LocalDate.of(Integer.parseInt(sumary[5]), Integer.parseInt(sumary[3]),
                        Integer.parseInt(sumary[2]));
            }
            if (cell.getRowIndex() > rowNoIdx + 1 && cell.getColumnIndex() == (colNoIdx + 2)) {
                if (cell.getStringCellValue().equalsIgnoreCase("LIBUR")) {
                    i = i + 1;
                    break outerloop;
                } else {
                    String delimsJam = "[-]";
                    String[] arrJam = cell.getStringCellValue().split(delimsJam);
                    for (int k = 0; k < arrJam.length; k++) {
                        arrJam[k] = arrJam[k].replace('.', ':');
                    }
                    lt = LocalTime.parse(arrJam[0]);
                }

            }
            if (cell.getRowIndex() > rowNoIdx + 1 && cell.getColumnIndex() == (colNoIdx + 5)) {
                subject = cell.getStringCellValue();
            }

            if (cell.getRowIndex() > rowNoIdx && cell.getColumnIndex() >= colNoIdx + 6
                    && cell.getColumnIndex() < row.getLastCellNum()) {
                if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                }
                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    if (cell.getStringCellValue().contains(":")) {
                        String[] splt = cell.getStringCellValue().split(":");
                        String[] splt2 = splt[1].split(",");
                        for (int l = 0; l < splt2.length; l++) {
                            dosen.add(splt2[l].trim());
                            location.add("Lab");
                        }
                    } else {
                        CellReference cr = new CellReference(1, cell.getColumnIndex());
                        Row row2 = sheet.getRow(cr.getRow());
                        Cell c = row2.getCell(cr.getCol());
                        if (!cell.getStringCellValue().isEmpty()) {
                            dosen.add(cell.getStringCellValue().trim());
                            location.add(String.valueOf((int) c.getNumericCellValue()).trim());
                        }
                    }

                }
                if (cell.getCellType() == Cell.CELL_TYPE_BLANK && cell.getRowIndex() > 2) {
                    CellReference cr = new CellReference(cell.getRowIndex() - 1, cell.getColumnIndex());
                    Row row2 = sheet.getRow(cr.getRow());
                    Cell c = row2.getCell(cr.getCol());
                    CellReference cr2 = new CellReference(1, cell.getColumnIndex());
                    Row row3 = sheet.getRow(cr2.getRow());
                    Cell c2 = row3.getCell(cr2.getCol());
                    if (c.getStringCellValue().contains(":")) {
                        String[] splt = c.getStringCellValue().split(":");
                        String[] splt2 = splt[1].split(",");
                        for (int l = 0; l < splt2.length; l++) {
                            dosen.add("".trim());
                            location.add("");
                        }
                    } else {
                        if (!c.getStringCellValue().isEmpty()) {
                            dosen.add("");
                            location.add("");
                        }
                    }
                }
            }
        }

        for (int j = 0; j < dosen.size(); j++) {
            scheduleList
                    .add(new ScheduleClass(lc, lt, lt.plusHours(2), subject, dosen.get(j), location.get(j)));
        }
        dosen.clear();
        location.clear();

    }

    return Mergering(scheduleList);
}

From source file:FenetrePrincipal.java

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor./*  w  w  w.j av a2 s.co m*/
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollBar1 = new JScrollBar();
    jPanelOption = new JPanel();
    jPanelBanniere = new JPanel();
    jLabelBanniere = new JLabel();
    jPanel4 = new JPanel();
    jLabel1 = new JLabel();
    jPanelCentre = new JPanel();
    jScrollPane1 = new JScrollPane();
    jTable1 = new JTable();
    jMenuBar1 = new JMenuBar();
    jMenu1 = new JMenu();
    jMenu2 = new JMenu();
    ajouterBouton = new JButton("Ajouter Etudiant");
    statBouton = new JButton("   Satistiques   ");
    jPanelBouton1 = new JPanel();
    jPanelBouton2 = new JPanel();
    pdfBouton = new JButton("   Exporter Pdf   ");
    exportBouton = new JButton("Exporter Fichier ");
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
    jLabelBanniere.setText("");

    javax.swing.GroupLayout jPanelBanniereLayout = new javax.swing.GroupLayout(jPanelBanniere);
    jPanelBanniere.setLayout(jPanelBanniereLayout);
    jPanelBanniereLayout.setHorizontalGroup(jPanelBanniereLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLabelBanniere,
                    javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,
                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
    jPanelBanniereLayout
            .setVerticalGroup(
                    jPanelBanniereLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanelBanniereLayout.createSequentialGroup()
                                    .addComponent(jLabelBanniere, javax.swing.GroupLayout.PREFERRED_SIZE, 50,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(0, 0, Short.MAX_VALUE)));

    jPanel4.setLayout(new java.awt.GridLayout(4, 1));

    jLabel1.setText("");
    jPanel4.add(jPanelBouton1);
    jPanel4.add(jPanelBouton2);
    jPanelBouton1.add(ajouterBouton);
    jPanelBouton1.add(statBouton);
    jPanelBouton2.add(exportBouton);
    jPanelBouton2.add(pdfBouton);

    try {
        File excel = new File("results.xlsx");
        FileInputStream fis = new FileInputStream(excel);

        XSSFWorkbook wb = new XSSFWorkbook(fis);
        XSSFSheet ws = wb.getSheet("M1 Informatique - S8 - Pre-insc");

        rowNum = ws.getLastRowNum() + 1;
        colNum = ws.getRow(0).getLastCellNum();

        data = new String[rowNum][colNum];

        for (int i = 0; i < rowNum; i++) {
            XSSFRow row = ws.getRow(i);
            for (int j = 0; j < colNum; j++) {
                XSSFCell cell = row.getCell(j);
                String value = cellToString(cell);
                data[i][j] = value;
                System.out.println("The value is : " + value);
            }

        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        System.out.println("Erreur");
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String[] entetes = new String[colNum];
    for (int i = 0; i < colNum; i++) {
        entetes[i] = data[0][i];
    }

    jTable1.setModel(new javax.swing.table.DefaultTableModel(data, entetes));
    jScrollPane1.setViewportView(jTable1);
    jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    javax.swing.GroupLayout jPanelCentreLayout = new javax.swing.GroupLayout(jPanelCentre);
    jPanelCentre.setLayout(jPanelCentreLayout);
    jPanelCentreLayout.setHorizontalGroup(jPanelCentreLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCentreLayout.createSequentialGroup().addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)
                    .addContainerGap()));
    jPanelCentreLayout.setVerticalGroup(jPanelCentreLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCentreLayout.createSequentialGroup().addComponent(jScrollPane1,
                    javax.swing.GroupLayout.PREFERRED_SIZE, 481, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(0, 0, Short.MAX_VALUE)));

    javax.swing.GroupLayout jPanelOptionLayout = new javax.swing.GroupLayout(jPanelOption);
    jPanelOption.setLayout(jPanelOptionLayout);
    jPanelOptionLayout.setHorizontalGroup(
            jPanelOptionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanelBanniere, javax.swing.GroupLayout.DEFAULT_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanelOptionLayout.createSequentialGroup()
                            .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 150,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jPanelCentre, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    jPanelOptionLayout.setVerticalGroup(jPanelOptionLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelOptionLayout.createSequentialGroup()
                    .addComponent(jPanelBanniere, javax.swing.GroupLayout.PREFERRED_SIZE,
                            javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(jPanelOptionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jPanelCentre, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))));

    getContentPane().add(jPanelOption);

    jMenu1.setText("Fichier");
    jMenuBar1.add(jMenu1);
    JMenuItem importer = new JMenuItem("Importer");
    JMenuItem exporter = new JMenuItem("Exporter");
    jMenu1.add(importer);
    jMenu1.add(exporter);

    jMenu2.setText("Edition");
    jMenuBar1.add(jMenu2);

    setJMenuBar(jMenuBar1);

    importer.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            //FileExtensionFilterDemo f = new FileExtensionFilterDemo();
            showOpenFileDialog();
        }
    });

    pack();
}

From source file:Authenticator.java

static boolean authenticate(String username, String path) {
    int i = 0;//from   ww w.  j  ava 2 s  . c  o m
    try {
        FileInputStream f_input = new FileInputStream(new File(path));
        XSSFWorkbook workbook = new XSSFWorkbook(f_input);
        XSSFSheet sheet = workbook.getSheetAt(0);
        int rows_number = sheet.getLastRowNum();
        System.out.println(rows_number);
        XSSFRow row_user = null;
        XSSFCell cell_user = null;
        for (int iterator = 1; iterator <= rows_number; iterator++) {
            row_user = sheet.getRow(iterator);
            cell_user = row_user.getCell(0);
            String valid_username = cell_user.getStringCellValue();
            if (username.equals(valid_username)) {
                System.out.println("valid user");
                return true;
            }
        }
        return false;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

From source file:ExampleClass.java

public static void main(String[] args) throws Exception {
    File src = new File(
            "C:\\Users\\Ariq\\Documents\\NetBeansProjects\\Skripsi-Jadwal-Mengawas-Ujian\\Contoh File\\Jadwal_Pengawas_ Ujian_Pak_ Pascal.xlsx");
    //File src = new File("D:\\\\Skripsi\\\\Data Baru\\\\Daftar Dosen.xlsx");
    FileInputStream fis = new FileInputStream(src);
    XSSFWorkbook wb = new XSSFWorkbook(fis);

    XSSFSheet sheet1 = wb.getSheetAt(0);
    //        Iterator< Row> rowIterator = sheet1.iterator();
    int colIndex = 0;
    int ex = 0;//from  ww  w.j  a  va2 s .c o  m
    int lastCol = sheet1.getLastRowNum();
    int i = 0;
    int idx = 0;
    CellRangeAddress add;

    //        while (rowIterator.hasNext()) {
    //            row = (XSSFRow) rowIterator.next();
    //            Iterator< Cell> cellIterator = row.cellIterator();
    //            //System.out.println("i = "+i+", ex:"+ex);
    //
    //            if (row.getRowNum() > 53) {
    //                break;
    //            }
    ////            if(lastCol-(ex+1) == i) break;
    //            while (cellIterator.hasNext()) {
    //                Cell cell = cellIterator.next();

    //                for (int f = 0; f < sheet1.getNumMergedRegions(); f++) {
    //                    add = sheet1.getMergedRegion(f);
    //                    
    //                    int col = add.getFirstColumn();
    //                    int rowNum = add.getFirstRow();
    //                    if (rowNum != 0 && rowNum == cell.getRowIndex() && colIndex == cell.getColumnIndex()) {
    //                        System.out.println("col:"+col+" "+",row :"+rowNum);
    //                        String b = String.valueOf(sheet1.getRow(rowNum).getCell(col));
    //                        System.out.println(b);     
    //                        
    //                    }
    //                    
    //                }
    //               switch (cell.getCellType()) 
    //               {
    //                  case Cell.CELL_TYPE_FORMULA:
    //                      ex++;
    //                       switch (cell.getCachedFormulaResultType()) 
    //                       {
    //                           case Cell.CELL_TYPE_NUMERIC:
    //                           i = (int)cell.getNumericCellValue();
    //                           System.out.print( 
    //                           (int)cell.getNumericCellValue() + " \t\t " );
    //                             
    //                                 
    //                           break;
    //                       }
    //                   break;
    //                  case Cell.CELL_TYPE_NUMERIC:
    //                    if (cell.getColumnIndex() >= 6)
    //                    {
    //                        System.out.print( 
    //                        (int)cell.getNumericCellValue() + " \t\t " );
    //                    }
    //                    break;
    //                  case Cell.CELL_TYPE_STRING:
    //                   add = sheet1.getMergedRegion(cell.getRowIndex());
    //              
    //                   if (cell.getStringCellValue().contentEquals("No."))
    //                    {
    //                       colIndex = cell.getColumnIndex();
    //                    }
    //                   if (cell.getColumnIndex() == 1)
    //                   {
    //                        System.out.print(
    //                        cell.getStringCellValue() + " \t\t " );
    //                   }              
    //                   break;
    //                  
    //               }
    //            }
    //
    //            System.out.println();
    //        }

    for (int j = 0; j < sheet1.getLastRowNum(); j++) {

        row = sheet1.getRow(j);
        for (int k = 0; k < row.getLastCellNum(); k++) {

            Cell cell = row.getCell(k);
            //                if (cell.getColumnIndex() == 1)
            //                {
            //                    System.out.println(cell.getStringCellValue());
            //                }
            FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
            if (cell.getColumnIndex() == 0 && j > 3
                    && evaluator.evaluate(cell).getCellType() != Cell.CELL_TYPE_NUMERIC) {
                System.exit(k);
            }
            if (cell.getColumnIndex() >= 6 && cell.getColumnIndex() <= 11) {
                if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                    System.out.print((int) cell.getNumericCellValue() + " ");
                }
                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    if (cell.getStringCellValue().contains(":")) {
                        String[] splt = cell.getStringCellValue().split(":");
                        String[] splt2 = splt[1].split(",");
                        for (int l = 0; l < splt2.length; l++) {
                            System.out.println(splt2[l] + "= lab");
                        }
                    }

                    else {
                        CellReference cr = new CellReference(1, cell.getColumnIndex());
                        Row row2 = sheet1.getRow(cr.getRow());
                        Cell c = row2.getCell(cr.getCol());
                        System.out.print(
                                cell.getStringCellValue() + " Ruang =" + (int) c.getNumericCellValue() + " ");
                    }

                }
                if (cell.getCellType() == Cell.CELL_TYPE_BLANK && cell.getRowIndex() > 2) {
                    CellReference cr = new CellReference(cell.getRowIndex() - 1, cell.getColumnIndex());
                    Row row2 = sheet1.getRow(cr.getRow());
                    Cell c = row2.getCell(cr.getCol());
                    CellReference cr2 = new CellReference(1, cell.getColumnIndex());
                    Row row3 = sheet1.getRow(cr2.getRow());
                    Cell c2 = row3.getCell(cr2.getCol());
                    if (c.getStringCellValue().contains(":")) {
                        String[] splt = c.getStringCellValue().split(":");
                        String[] splt2 = splt[1].split(",");
                        for (int l = 0; l < splt2.length; l++) {
                            System.out.println(splt2[l] + "= lab");
                        }
                    }

                    else {
                        System.out.print(
                                c.getStringCellValue() + " Ruang = " + (int) c2.getNumericCellValue() + " ");
                    }
                }
            }

        }
        System.out.println("");
    }
    System.out.println(colIndex);

    System.out.println(idx);

    fis.close();
}

From source file:SiteStatIndexer.java

License:Open Source License

public static void doit2(XSSFSheet sheet, String attr, int column, int column2) throws IOException {
    FileInputStream stream = new FileInputStream("Dominions4.exe");
    stream.skip(Starts.SITE);// w w  w.jav a2 s.c o  m
    int rowNumber = 1;
    int i = 0;
    int k = 0;
    int numFound = 0;
    Set<Integer> posSet = new HashSet<Integer>();
    byte[] c = new byte[2];
    stream.skip(42);
    while ((stream.read(c, 0, 2)) != -1) {
        String high = String.format("%02X", c[1]);
        String low = String.format("%02X", c[0]);
        int weapon = Integer.decode("0X" + high + low);
        if (weapon == 0) {
            stream.skip(32l - numFound * 2l);
            // Values
            boolean found = false;
            List<Integer> values = new ArrayList<Integer>();
            for (int x = 0; x < numFound; x++) {
                stream.read(c, 0, 2);
                high = String.format("%02X", c[1]);
                low = String.format("%02X", c[0]);
                if (posSet.contains(x)) {
                    int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                    if (!found) {
                        found = true;
                    } else {
                        //System.out.print("\t");
                    }
                    //System.out.print(fire);
                    values.add(fire);
                }
                stream.skip(2);
            }

            //System.out.println("");
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            int ind = 0;
            for (Integer mon : values) {
                if (ind == 0) {
                    XSSFCell cell = row.getCell(column, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                } else {
                    XSSFCell cell = row.getCell(column2, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                }
                ind++;
            }
            stream.skip(142l - 32l - numFound * 4l);
            numFound = 0;
            posSet.clear();
            k = 0;
            i++;
        } else {
            //System.out.print(low + high + " ");
            if ((low + high).equals(attr)) {
                posSet.add(k);
            }
            k++;
            numFound++;
        }
        if (i >= Starts.SITE_COUNT) {
            break;
        }
    }
    stream.close();

}

From source file:SiteStatIndexer.java

License:Open Source License

public static void doit(XSSFSheet sheet, String attr, int column, Callback callback) throws IOException {
    FileInputStream stream = new FileInputStream("Dominions4.exe");
    stream.skip(Starts.SITE);/* w w w  . ja v  a2  s .c  o  m*/
    int rowNumber = 1;

    int i = 0;
    int k = 0;
    int pos = -1;
    long numFound = 0;
    byte[] c = new byte[2];
    stream.skip(42);
    while ((stream.read(c, 0, 2)) != -1) {
        String high = String.format("%02X", c[1]);
        String low = String.format("%02X", c[0]);
        int weapon = Integer.decode("0X" + high + low);
        if (weapon == 0) {
            boolean found = false;
            int value = 0;
            stream.skip(32l - numFound * 2l);
            // Values
            for (int x = 0; x < numFound; x++) {
                stream.read(c, 0, 2);
                high = String.format("%02X", c[1]);
                low = String.format("%02X", c[0]);
                //System.out.print(low + high + " ");
                if (x == pos) {
                    int tmp = new BigInteger(high + low, 16).intValue();
                    if (tmp < 1000) {
                        value = Integer.decode("0X" + high + low);
                    } else {
                        value = new BigInteger("FFFF" + high + low, 16).intValue();
                    }
                    //System.out.print(fire);
                    found = true;
                }
                stream.skip(2);
            }

            //System.out.println("");
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(column, Row.CREATE_NULL_AS_BLANK);
            if (found) {
                if (callback == null) {
                    cell.setCellValue(value);
                } else {
                    cell.setCellValue(callback.found(Integer.toString(value)));
                }
            } else {
                if (callback == null) {
                    cell.setCellValue("");
                } else {
                    cell.setCellValue(callback.notFound());
                }
            }
            stream.skip(142l - 32l - numFound * 4l);
            numFound = 0;
            pos = -1;
            k = 0;
            i++;
        } else {
            //System.out.print(low + high + " ");
            if ((low + high).equals(attr)) {
                pos = k;
            }
            k++;
            numFound++;
        }
        if (i >= Starts.SITE_COUNT) {
            break;
        }
    }
    stream.close();
}

From source file:SiteStatIndexer.java

License:Open Source License

public static void run() {
    FileInputStream stream = null;
    try {/* w w  w.j a  v a  2 s. c  om*/
        long startIndex = Starts.SITE;
        int ch;

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);

        XSSFWorkbook wb = SiteStatIndexer.readFile("MagicSites.xlsx");
        FileOutputStream fos = new FileOutputStream("NewMagicSites.xlsx");
        XSSFSheet sheet = wb.getSheetAt(0);

        // Name
        InputStreamReader isr = new InputStreamReader(stream, "ISO-8859-1");
        Reader in = new BufferedReader(isr);
        int rowNumber = 1;
        while ((ch = in.read()) > -1) {
            StringBuffer name = new StringBuffer();
            while (ch != 0) {
                name.append((char) ch);
                ch = in.read();
            }
            if (name.length() == 0) {
                continue;
            }
            if (name.toString().equals("end")) {
                break;
            }
            in.close();

            stream = new FileInputStream("Dominions4.exe");
            startIndex = startIndex + 144l;
            stream.skip(startIndex);
            isr = new InputStreamReader(stream, "ISO-8859-1");
            in = new BufferedReader(isr);

            //System.out.println(name);
            XSSFRow row = sheet.getRow(rowNumber);
            XSSFCell cell1 = row.getCell(0, Row.CREATE_NULL_AS_BLANK);
            cell1.setCellValue(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(1, Row.CREATE_NULL_AS_BLANK);
            cell.setCellValue(name.toString());
        }
        in.close();
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // rarity
        int i = 0;
        byte[] c = new byte[1];
        stream.skip(40);
        while ((stream.read(c, 0, 1)) != -1) {
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(2, Row.CREATE_NULL_AS_BLANK);
            if (c[0] == -1 || c[0] == 0) {
                //System.out.println("0");
                cell.setCellValue("0");
            } else {
                //System.out.println(c[0]);
                cell.setCellValue(c[0]);
            }
            stream.skip(143l);
            i++;
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // loc
        i = 0;
        c = new byte[2];
        stream.skip(140);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            //System.out.println(Integer.decode("0X" + high + low));
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(3, Row.CREATE_NULL_AS_BLANK);
            cell.setCellValue(Integer.decode("0X" + high + low));
            stream.skip(142l);
            i++;
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // level
        i = 0;
        c = new byte[1];
        stream.skip(38);
        while ((stream.read(c, 0, 1)) != -1) {
            String high = String.format("%02X", c[0]);
            //System.out.println(Integer.decode("0X" + high));
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(4, Row.CREATE_NULL_AS_BLANK);
            cell.setCellValue(Integer.decode("0X" + high));
            stream.skip(143l);
            i++;
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // path
        String[] paths = { "Fire", "Air", "Water", "Earth", "Astral", "Death", "Nature", "Blood", "Holy" };
        i = 0;
        c = new byte[1];
        stream.skip(36);
        while ((stream.read(c, 0, 1)) != -1) {
            XSSFRow row = sheet.getRow(rowNumber);
            rowNumber++;
            XSSFCell cell = row.getCell(5, Row.CREATE_NULL_AS_BLANK);
            if (c[0] == -1) {
                //System.out.println("");
                cell.setCellValue("");
            } else {
                //System.out.println(paths[c[0]]);
                cell.setCellValue(paths[c[0]]);
            }
            stream.skip(143l);
            i++;
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        // F
        doit2(sheet, "0100", 6, 92);

        // A
        doit2(sheet, "0200", 7, 93);

        // W
        doit2(sheet, "0300", 8, 94);

        // E
        doit2(sheet, "0400", 9, 95);

        // S
        doit2(sheet, "0500", 10, 96);

        // D
        doit2(sheet, "0600", 11, 97);

        // N
        doit2(sheet, "0700", 12, 98);

        // B
        doit2(sheet, "0800", 13, 99);

        // gold
        doit(sheet, "0D00", 14);

        // res
        doit(sheet, "0E00", 15);

        // sup
        doit(sheet, "1400", 16);

        // unr
        doit(sheet, "1300", 17, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return Integer.toString(-Integer.parseInt(value));
            }
        });

        // exp
        doit(sheet, "1600", 18);

        // lab
        doit(sheet, "0F00", 19, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return "lab";
            }
        });

        // fort
        doit(sheet, "1100", 20);

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // scales
        String[] scales = { "Turmoil", "Sloth", "Cold", "Death", "Misfortune", "Drain" };
        String[] opposite = { "Order", "Productivity", "Heat", "Growth", "Luck", "Magic" };
        i = 0;
        int k = 0;
        Set<Integer> scalesSet = new HashSet<Integer>();
        Set<Integer> oppositeSet = new HashSet<Integer>();
        long numFound = 0;
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                String value[] = { "", "" };
                int index = 0;
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    //System.out.print(low + high + " ");
                    if (oppositeSet.contains(x)) {
                        //int fire = Integer.decode("0X" + high + low);
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(opposite[fire]);
                        value[index++] = opposite[fire];
                    }
                    if (scalesSet.contains(x)) {
                        //int fire = Integer.decode("0X" + high + low);
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(scales[fire]);
                        value[index++] = scales[fire];
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                if (value[0].length() > 0) {
                    XSSFCell cell = row.getCell(21, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(value[0]);
                }
                if (value[1].length() > 0) {
                    XSSFCell cell = row.getCell(22, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(value[1]);
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                scalesSet.clear();
                oppositeSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("1F00")) {
                    oppositeSet.add(k);
                }
                if ((low + high).equals("2000")) {
                    scalesSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // rit/ritr
        i = 0;
        k = 0;
        String rit = "";
        numFound = 0;
        int pos = -1;
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                boolean found = false;
                int value = 0;
                // Values
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    //System.out.print(low + high + " ");
                    if (x == pos) {
                        //int fire = Integer.decode("0X" + high + low);
                        //int fire = new BigInteger(new byte[]{c[1], c[0]}).intValue();
                        //System.out.print(rit + "\t" + fire);
                        found = true;
                        value = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                XSSFCell cell1 = row.getCell(41, Row.CREATE_NULL_AS_BLANK);
                XSSFCell cell2 = row.getCell(42, Row.CREATE_NULL_AS_BLANK);
                if (found) {
                    cell1.setCellValue(rit);
                    cell2.setCellValue(value);
                } else {
                    cell1.setCellValue("");
                    cell2.setCellValue("");
                }

                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                pos = -1;
                rit = "";
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("FA00")) {
                    rit += "F";
                    pos = k;
                }
                if ((low + high).equals("FB00")) {
                    rit += "A";
                    pos = k;
                }
                if ((low + high).equals("FC00")) {
                    rit += "W";
                    pos = k;
                }
                if ((low + high).equals("FD00")) {
                    rit += "E";
                    pos = k;
                }
                if ((low + high).equals("FE00")) {
                    rit += "S";
                    pos = k;
                }
                if ((low + high).equals("FF00")) {
                    rit += "D";
                    pos = k;
                }
                if ((low + high).equals("0001")) {
                    rit += "N";
                    pos = k;
                }
                if ((low + high).equals("0101")) {
                    rit += "B";
                    pos = k;
                }
                if ((low + high).equals("0401")) {
                    rit += "*";
                    pos = k;
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // hmon
        i = 0;
        k = 0;
        numFound = 0;
        Set<Integer> posSet = new HashSet<Integer>();
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                List<Integer> values = new ArrayList<Integer>();
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(fire);
                        values.add(fire);
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                int ind = 0;
                for (Integer mon : values) {
                    XSSFCell cell = row.getCell(43 + ind, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                    ind++;
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("1D00")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // hcom
        i = 0;
        k = 0;
        numFound = 0;
        posSet = new HashSet<Integer>();
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                List<Integer> values = new ArrayList<Integer>();
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(fire);
                        values.add(fire);
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                int ind = 0;
                for (Integer mon : values) {
                    XSSFCell cell = row.getCell(73 + ind, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                    ind++;
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("1E00")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // mon
        i = 0;
        k = 0;
        numFound = 0;
        posSet = new HashSet<Integer>();
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                List<Integer> values = new ArrayList<Integer>();
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(fire);
                        values.add(fire);
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                int ind = 0;
                for (Integer mon : values) {
                    XSSFCell cell = row.getCell(78 + ind, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                    ind++;
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("0B00")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // com
        i = 0;
        k = 0;
        numFound = 0;
        posSet = new HashSet<Integer>();
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                List<Integer> values = new ArrayList<Integer>();
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(fire);
                        values.add(fire);
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                int ind = 0;
                for (Integer mon : values) {
                    XSSFCell cell = row.getCell(83 + ind, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                    ind++;
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("0C00")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // provdef
        i = 0;
        k = 0;
        numFound = 0;
        posSet = new HashSet<Integer>();
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                boolean found = false;
                List<Integer> values = new ArrayList<Integer>();
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (!found) {
                            found = true;
                        } else {
                            //System.out.print("\t");
                        }
                        //System.out.print(fire);
                        values.add(fire);
                    }
                    stream.skip(2);
                }

                //System.out.println("");
                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                int ind = 0;
                for (Integer mon : values) {
                    XSSFCell cell = row.getCell(89 + ind, Row.CREATE_NULL_AS_BLANK);
                    cell.setCellValue(mon);
                    ind++;
                }
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("E000")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        // conj
        doit(sheet, "3C00", 55, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // alter
        doit(sheet, "3D00", 56, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // evo
        doit(sheet, "3E00", 57, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // const
        doit(sheet, "3F00", 58, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // ench
        doit(sheet, "4000", 59, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // thau
        doit(sheet, "4100", 60, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // blood
        doit(sheet, "4200", 61, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // heal
        doit(sheet, "4600", 62, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // disease
        doit(sheet, "1500", 63, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // curse
        doit(sheet, "4700", 64, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // horror
        doit(sheet, "1800", 65, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // holyfire
        doit(sheet, "4400", 66, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // holypower
        doit(sheet, "4300", 67, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        // scry
        doit(sheet, "4800", 68);

        // adventure
        doit(sheet, "C000", 69);

        // voidgate
        doit(sheet, "3900", 48, new CallbackAdapter() {
            @Override
            public String found(String value) {
                return value + "%";
            }
        });

        stream = new FileInputStream("Dominions4.exe");
        stream.skip(Starts.SITE);
        rowNumber = 1;
        // summoning
        i = 0;
        k = 0;
        posSet = new HashSet<Integer>();
        int sum1 = 0;
        int sum1count = 0;
        int sum2 = 0;
        int sum2count = 0;
        int sum3 = 0;
        int sum3count = 0;
        int sum4 = 0;
        int sum4count = 0;
        numFound = 0;
        c = new byte[2];
        stream.skip(42);
        while ((stream.read(c, 0, 2)) != -1) {
            String high = String.format("%02X", c[1]);
            String low = String.format("%02X", c[0]);
            int weapon = Integer.decode("0X" + high + low);
            if (weapon == 0) {
                stream.skip(32l - numFound * 2l);
                // Values
                for (int x = 0; x < numFound; x++) {
                    stream.read(c, 0, 2);
                    high = String.format("%02X", c[1]);
                    low = String.format("%02X", c[0]);
                    if (posSet.contains(x)) {
                        int fire = new BigInteger(new byte[] { c[1], c[0] }).intValue();
                        if (sum1 == 0 || sum1 == fire) {
                            sum1 = fire;
                            sum1count++;
                        } else if (sum2 == 0 || sum2 == fire) {
                            sum2 = fire;
                            sum2count++;
                        } else if (sum3 == 0 || sum3 == fire) {
                            sum3 = fire;
                            sum3count++;
                        } else if (sum4 == 0 || sum4 == fire) {
                            sum4 = fire;
                            sum4count++;
                        }
                    }
                    stream.skip(2);
                }

                XSSFRow row = sheet.getRow(rowNumber);
                rowNumber++;
                //String sum = "";
                if (sum1 > 0) {
                    //sum += sum1 + "\t" + sum1count;
                    XSSFCell cell1 = row.getCell(49, Row.CREATE_NULL_AS_BLANK);
                    cell1.setCellValue(sum1);
                    XSSFCell cell2 = row.getCell(50, Row.CREATE_NULL_AS_BLANK);
                    cell2.setCellValue(sum1count);

                }
                if (sum2 > 0) {
                    //sum += "\t" + sum2 + "\t" + sum2count;
                    XSSFCell cell1 = row.getCell(51, Row.CREATE_NULL_AS_BLANK);
                    cell1.setCellValue(sum2);
                    XSSFCell cell2 = row.getCell(52, Row.CREATE_NULL_AS_BLANK);
                    cell2.setCellValue(sum2count);
                }
                if (sum3 > 0) {
                    //sum += "\t" + sum3 + "\t" + sum3count;
                    XSSFCell cell1 = row.getCell(53, Row.CREATE_NULL_AS_BLANK);
                    cell1.setCellValue(sum3);
                    XSSFCell cell2 = row.getCell(54, Row.CREATE_NULL_AS_BLANK);
                    cell2.setCellValue(sum3count);
                }
                if (sum4 > 0) {
                    //sum += "\t" + sum3 + "\t" + sum3count;
                    XSSFCell cell1 = row.getCell(71, Row.CREATE_NULL_AS_BLANK);
                    cell1.setCellValue(sum4);
                    XSSFCell cell2 = row.getCell(72, Row.CREATE_NULL_AS_BLANK);
                    cell2.setCellValue(sum4count);
                }
                //System.out.println(sum);
                stream.skip(142l - 32l - numFound * 4l);
                numFound = 0;
                posSet.clear();
                k = 0;
                sum1 = 0;
                sum1count = 0;
                sum2 = 0;
                sum2count = 0;
                sum3 = 0;
                sum3count = 0;
                sum4 = 0;
                sum4count = 0;
                i++;
            } else {
                //System.out.print(low + high + " ");
                if ((low + high).equals("1200")) {
                    posSet.add(k);
                }
                k++;
                numFound++;
            }
            if (i >= Starts.SITE_COUNT) {
                break;
            }
        }
        stream.close();

        // domspread
        doit(sheet, "1501", 23);

        // turmoil/order
        doit(sheet, "1901", 24);

        // sloth/prod
        doit(sheet, "1A01", 25);

        // cold/heat
        doit(sheet, "1B01", 26);

        // death/growth
        doit(sheet, "1C01", 27);

        // misfortune/luck
        doit(sheet, "1D01", 28);

        // drain/magic
        doit(sheet, "1E01", 29);

        // fire resistence
        doit(sheet, "FB01", 30);

        // cold resistence
        doit(sheet, "FC01", 31);

        // str
        doit(sheet, "FA01", 34);

        // prec
        doit(sheet, "0402", 35);

        // mor
        doit(sheet, "F401", 36);

        // shock resistence
        doit(sheet, "FD01", 32);

        // undying
        doit(sheet, "F801", 37);

        // att
        doit(sheet, "F501", 38);

        // poison resistence
        doit(sheet, "FE01", 33);

        // darkvision
        doit(sheet, "0302", 39);

        // animal awe
        doit(sheet, "0102", 40);

        // reveal
        doit(sheet, "0601", 88);

        // def
        doit(sheet, "F601", 91);

        // awe
        doit(sheet, "0202", 100);

        // reinvigoration
        doit(sheet, "FF01", 101);

        // airshield
        doit(sheet, "0002", 102);

        // provdefcom
        doit(sheet, "4A00", 103);

        wb.write(fos);
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (stream != null) {
            try {
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

From source file:ReadSheet2.java

public HashMap readTable1(String path) throws IOException {

    HashMap<String, Object> table1part1 = new HashMap();
    HashMap<String, Object> table1part2 = new HashMap();
    HashMap<String, Object> table1 = new HashMap();
    HashMap<String, Object> sizeMetrix = new HashMap();
    FileInputStream fs = new FileInputStream(new File(path));
    XSSFWorkbook wb = new XSSFWorkbook(fs);
    XSSFSheet sheet = wb.getSheetAt(2);

    /*/*  w  ww. j  ava 2  s .co m*/
    Read Table 1 of the sheet 1
    */

    //String [] headerArray1 = {"BUSINESS DIVISION","CUSTOMER NAME/CATEGORY","SEASON","STYLE NO","SAMPLE SMV"};
    //String [] headerArray2 = {"SILHOUETTE","MERCHANT NAME","GARMENT TECH NAME"};
    //int rowIndexOfHeaderStart, int columnIndexOfHeaders, String[] headerArray
    int[] rawHeaders = reader.rowHeaderValidator(sheet, 2, 0, sheet2Table1HeaderArray1);
    int[] rawheaders2 = reader.rowHeaderValidator(sheet, 2, 15, sheet2Table1HeaderArray2);
    //
    table1part1 = reader.readRowHeaderTable(sheet, 0, rawHeaders, 2, 2);
    table1part2 = reader.readRowHeaderTable(sheet, 15, rawheaders2, 17, 17);
    //table1.putAll(table1part1);
    //table1.putAll(table1part2);

    /** ----------------------------------------------------------------------------------------------------------------------- **/

    //String [] headerArray3 = {"QTY" };
    //String [] headerArray4 = {"XS","S","M","L","XL","XXL" };
    //int rowIndexOfHeaderStart, int columnIndexOfHeaders, String[] headerArray

    int[] rawheaders3 = reader.rowHeaderValidator(sheet, 3, 5, sheet2SizeMetrixRows);
    int[] columnHeaders4 = reader.columnHeaderValidator(sheet, 3, sheet2SizeMetrixColumns);

    //
    //int [] rawHeaders3={3,4};
    //int [] rawheaders4 ={5,7,8,9,10,11,12};

    table1part2 = reader.readColumnAndRowHeaderTable(sheet, 3, 7, columnHeaders4, 3, 4, rawheaders3);

    table1.put("cutting metrix", table1part2);

    table1.put(reader.getValue(sheet.getRow(3).getCell(13)).toString(),
            reader.getValue(sheet.getRow(4).getCell(13)));
    table1.put(reader.getValue(sheet.getRow(3).getCell(14)).toString(),
            reader.getValue(sheet.getRow(4).getCell(14)));

    table1.put(reader.getValue(sheet.getRow(2).getCell(5)).toString(),
            reader.getValue(sheet.getRow(5).getCell(7)));
    table1.put(reader.getValue(sheet.getRow(6).getCell(5)).toString(),
            reader.getValue(sheet.getRow(6).getCell(7)));
    table1.put(reader.getValue(sheet.getRow(6).getCell(14)).toString(),
            reader.getValue(sheet.getRow(6).getCell(17)));

    return table1;

}

From source file:ReadSheet2.java

public HashMap readTable2(String path) throws IOException {

    HashMap<String, Object> table2part1 = new HashMap();
    HashMap<String, Object> table2part2 = new HashMap();
    HashMap<String, Object> table2 = new HashMap();
    HashMap<String, Object> conformation = new HashMap();
    HashMap<String, Object> verification = new HashMap();

    FileInputStream fs = new FileInputStream(new File(path));
    XSSFWorkbook wb = new XSSFWorkbook(fs);
    XSSFSheet sheet = wb.getSheetAt(2);

    /*/*from   w w w.ja  v a  2  s  . c o  m*/
    Read Table 1 of the sheet 1
    */

    //String [] headerArray1 = {"MARKER #","IM #","FABRIC COLOR","Fabric Face","SPECIAL NOTES"};
    //String [] headerArray2 = {"MARKER A","MARKER B","MARKER C","MARKER D","MARKER E","MARKER F"};
    //int rowIndexOfHeaderStart, int columnIndexOfHeaders, String[] headerArray

    int[] rawHeaders = reader.columnHeaderValidator(sheet, 9, sheet2FabricDetailsColumns);
    int[] rawheaders2 = reader.rowHeaderValidator(sheet, 9, 0, sheet2FabricDetailsRows);
    //
    table2part1 = reader.readColumnAndRowHeaderTable(sheet, 9, 0, rawHeaders, 9, 13, rawheaders2);

    table2.put("Marker", table2part1);
    //----------------------------
    conformation.put(reader.getValue(sheet.getRow(14).getCell(0)).toString(),
            reader.getValue(sheet.getRow(14).getCell(3)));

    String temp = reader.getValue(sheet.getRow(14).getCell(10)).toString();
    String key = temp.substring(0, 4);
    String value = temp.substring(4);
    if (temp.length() > 4) {
        conformation.put(key, value);
    } else
        conformation.put(temp, "");
    conformation.put(reader.getValue(sheet.getRow(14).getCell(15)).toString(),
            reader.getValue(sheet.getRow(14).getCell(17)));

    table2.put("conformation", conformation);

    //--------------------------------
    verification.put(reader.getValue(sheet.getRow(15).getCell(0)).toString(),
            reader.getValue(sheet.getRow(15).getCell(3)));

    String temp1 = reader.getValue(sheet.getRow(15).getCell(10)).toString();
    String key1 = temp1.substring(0, 4);
    String value1 = temp1.substring(4);
    if (temp1.length() > 4) {
        verification.put(key1, value1);
    } else
        verification.put(temp1, "");

    verification.put(reader.getValue(sheet.getRow(15).getCell(15)).toString(),
            reader.getValue(sheet.getRow(15).getCell(17)));

    table2.put("verification", verification);

    return table2;

}

From source file:ReadSheet2.java

public HashMap readTable3(String path) throws IOException {

    HashMap<String, Object> table3part1 = new HashMap();
    HashMap<String, Object> table3part2 = new HashMap();
    HashMap<String, Object> table3 = new HashMap();
    HashMap<String, Object> conformation = new HashMap();
    HashMap<String, Object> verification = new HashMap();

    FileInputStream fs = new FileInputStream(new File(path));
    XSSFWorkbook wb = new XSSFWorkbook(fs);
    XSSFSheet sheet = wb.getSheetAt(2);

    /*//from www .j a v  a2  s. c  o m
    Read Table 1 of the sheet 1
    */

    //String [] headerArray1 = {"SIZE","RATIO","NO OF PLIES","TOTAL CUT QTY","REQUIRED QTY"};
    //String [] headerArray2 = {"XS","S","M","L","XL" };
    //int rowIndexOfHeaderStart, int columnIndexOfHeaders, String[] headerArray

    int[] rawHeaders = reader.columnHeaderValidator(sheet, 19, sheet2CuttingInfoColumns);
    int[] rawheaders2 = reader.rowHeaderValidator(sheet, 19, 0, sheet2CuttingInfoRows);
    //
    table3part1 = reader.readColumnAndRowHeaderTable(sheet, 19, 0, rawHeaders, 19, 23, rawheaders2);

    table3.put("cutting metrix", table3part1);
    //----------------------------

    String temp = reader.getValue(sheet.getRow(17).getCell(0)).toString();
    String key = temp.substring(0, 14);
    String value = temp.substring(14);
    if (temp.length() > 13) {
        table3.put(key, value);
    } else
        table3.put(temp, "");

    String temp1 = reader.getValue(sheet.getRow(18).getCell(0)).toString();
    String key1 = temp1.substring(0, 14);
    String value1 = temp1.substring(14);
    if (temp1.length() > 15) {
        table3.put(key1, value1);
    } else
        table3.put(temp1, "");

    String temp2 = reader.getValue(sheet.getRow(17).getCell(15)).toString();
    String key2 = temp2.substring(0, 10);
    String value2 = temp2.substring(10);
    if (temp2.length() > 10) {
        table3.put(key2, value2);
    } else
        table3.put(temp2, "");

    String temp3 = reader.getValue(sheet.getRow(18).getCell(15)).toString();
    String key3 = temp3.substring(0, 10);
    String value3 = temp3.substring(10);
    if (temp3.length() > 10) {
        table3.put(key3, value3);
    } else
        table3.put(temp3, "");

    return table3;

}