package com.fahmisatrio.bean;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public abstract class test {
public String parsingExcelDocument(String filedir, int sheetnum) throws Exception {
// Define file and sheet to be proced
FileInputStream file = new FileInputStream(new File(filedir)); //Directory file excel yang akan diproses
int sheetNumber = sheetnum; //Sheet pertama = 0
//HSSFSheet inputSheet = du.prepareDocument(file,sheetNumber); //Untuk document dengan format XLS
XSSFSheet inputSheet = prepareDocument(file,sheetNumber); //Untuk document dengan format XLSX
Integer[] length = validateDocument(inputSheet);
int totalRow = length[1];
int totalColumn = length[0];
Object[][] result = parseDocument(inputSheet, totalColumn, totalRow);
//result dapat diolah lagi atau disimpan ke database
//code
System.out.println(result);
return "finish";
}
public XSSFSheet prepareDocument(FileInputStream file, Integer sheetNumber) throws IOException {
//Get the workbook instance for XLS file
XSSFWorkbook workbook = new XSSFWorkbook (file);
//Get sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(sheetNumber);
return sheet;
}
public Integer[] validateDocument(XSSFSheet sheet) throws Exception {
// Iterate through each rows from sheet
Iterator<Row> rowIterator = sheet.iterator();
int indexCol = 0;
int indexRow = 0;
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if(row.getRowNum()==0){
Iterator<Cell> countColumn = row.cellIterator();
while (countColumn.hasNext()) {
Cell cell = countColumn.next();
indexCol++;
}
}
indexRow = row.getRowNum();
}
Integer[] index = new Integer[2];
index[0] = indexCol;
index[1] = indexRow;
return index;
}
public Object[][] parseDocument(XSSFSheet sheet, Integer columnLength, Integer rowLength) throws Exception {
// Iterate through each rows from sheet
Iterator<Row> rowIterator = sheet.iterator();
Object[][] result = new Object[columnLength][rowLength];
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if(row.getRowNum()>0){
// For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
for(int i=0; i<columnLength;i++){
if (cell.getColumnIndex() == i) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
// System.out.print(cell.getStringCellValue()+" ");
result[i][row.getRowNum()-1] = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_FORMULA:
// System.out.print(cell.getCellFormula());
try {
// System.out.print(cell.getStringCellValue()+" ");
result[i][row.getRowNum()-1] = cell.getStringCellValue();
} catch (Exception e) {
// System.out.print(cell.getNumericCellValue()+" ");
result[i][row.getRowNum()-1] = cell.getNumericCellValue();
}
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
System.out.print(cell.getDateCellValue().toString()+" ");
result[i][row.getRowNum()-1] = cell.getDateCellValue();
} else {
// System.out.print(Double.toString(cell.getNumericCellValue())+" ");
result[i][row.getRowNum()-1] = cell.getNumericCellValue();
}
break;
case Cell.CELL_TYPE_BLANK:
// System.out.print("");
result[i][row.getRowNum()-1] = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
// System.out.print(Boolean.toString(cell.getBooleanCellValue()));
result[i][row.getRowNum()-1] = Boolean.toString(cell.getBooleanCellValue());
break;
}
}
}
}
}
}
return result;
}
}