All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.poi.main.helper.excel.ExcelWorkbookFileHelper Maven / Gradle / Ivy

The newest version!
package prerna.poi.main.helper.excel;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Vector;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import prerna.query.querystruct.ExcelQueryStruct;
import prerna.util.Constants;
import prerna.util.Utility;

public class ExcelWorkbookFileHelper {

	private static final Logger classLogger = LogManager.getLogger(ExcelWorkbookFileHelper.class);

	private	Workbook workbook = null;
	private FileInputStream sourceFile = null;
	private String fileLocation = null;
	private String password = null;
	
	@Deprecated
	public void parse(String fileLocation) {
		parse(fileLocation, null);
	}
	
	public void parse(String fileLocation, String password) {
		this.fileLocation = fileLocation;
		this.password = password;
		createParser();
	}
	
	/**
	 * Opens the workbook
	 */
	private void createParser() {
		try {
			sourceFile = new FileInputStream(Utility.normalizePath(fileLocation));
			try {
				workbook = WorkbookFactory.create(sourceFile, this.password);
			} catch (EncryptedDocumentException e) {
				classLogger.error(Constants.STACKTRACE, e);
			}
		} catch (FileNotFoundException e) {
			classLogger.error(Constants.STACKTRACE, e);
		} catch (IOException e) {
			classLogger.error(Constants.STACKTRACE, e);
		}
	}
	
	/**
	 * Get all sheets
	 * @return
	 */
	public List getSheets() {
		int numSheets = workbook.getNumberOfSheets();
		List sheets = new Vector();
		for(int i = 0; i < numSheets; i++) {
			sheets.add(workbook.getSheetName(i));
		}
		
		return sheets;
	}
	
	/**
	 * Get the Sheet object
	 * @param sheetName
	 * @return
	 */
	public Sheet getSheet(String sheetName) {
		return workbook.getSheet(sheetName);
	}
	
	/**
	 * Get the file path 
	 */
	public String getFilePath() {
		return fileLocation;
	}
	
	/**
	 * 
	 * @param sheetName
	 * @param excelRange
	 * @param dataTypes
	 * @param additionalTypes
	 */
	public ExcelSheetFileIterator getSheetIterator(ExcelQueryStruct qs) {
		String sheetName = qs.getSheetName();
		Sheet sheet = workbook.getSheet(sheetName);
		ExcelSheetFileIterator it = new ExcelSheetFileIterator(sheet, qs);
		return it;
	}
	
	/**
	 * Builder to get to the sheet iterator
	 * @param qs
	 * @return
	 */
	public static ExcelSheetFileIterator buildSheetIterator(ExcelQueryStruct qs) {
		ExcelWorkbookFileHelper helper = new ExcelWorkbookFileHelper();
		helper.parse(qs.getFilePath(), qs.getPassword());
		return helper.getSheetIterator(qs);
	}
	
	/**
	 * Clears the parser and requires you to start the parsing from scratch	
	 */
	public void clear() {
		try {
			if(sourceFile != null) {
				sourceFile.close(); 
			}
		} catch (IOException e) {
			classLogger.error(Constants.STACKTRACE, e);
		} catch (Exception e) {
			classLogger.error(Constants.STACKTRACE, e);
		}
	}
	
	
	/////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////
	/////////////////////////////////////////////////////////////////////

//	public static void main(String[] args) {
//		TestUtilityMethods.loadDIHelper("C:\\workspace\\Semoss_Dev\\RDF_Map.prop");
//		
//		String fileLocation = "C:\\Users\\SEMOSS\\Desktop\\shifted.xlsx";
//		ExcelWorkbookFileHelper helper = new ExcelWorkbookFileHelper();
//		helper.parse(fileLocation);
//		System.out.println(helper.getSheets());
//		
//		
//		ExcelQueryStruct qs = new ExcelQueryStruct();
//		qs.setSheetName("Sheet1");
//		qs.setSheetRange("E7:R28");
//		
//		ExcelSheetFileIterator it = helper.getSheetIterator(qs);
//		while(it.hasNext()) {
//			System.out.println(Arrays.toString(it.next().getValues()));
//		}
//	}
//	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy