/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.excel.common;
import java.io.File;
import de.rcenvironment.core.datamodel.types.api.SmallTableTD;
/**
* Excel service interface for interaction with MS Excel.
* Implementations should be stateless (e. g., "static oriented") regarding usage in stateless services.
*
* @author Markus Kunde
*/
public interface ExcelService {
/**
* Test if file is a valid Excel file.
*
* @param xlFile Excel file
* @return true if valid Excel file
*/
boolean isValidExcelFile(final File xlFile);
/**
* @see #setValues(File, File, ExcelAddress, ITable)
*
* @param xlFile xlFile
* @param addr addr
* @param values values
* @throws ExcelException ExcelException
*/
void setValues(final File xlFile, final ExcelAddress addr, final SmallTableTD values) throws ExcelException;
/**
* Writes values into Excel file and saves it.
* The smaller range (address or values range) will be taken, rest will be cut off.
*
* @param xlFile Excel file
* @param newFile the Excel filename where to save new Excel file
* @param addr Address where data should be inserted into
* @param values Data which should be inserted
* @throws ExcelException thrown if exception occurs during runtime
*/
void setValues(final File xlFile, final File newFile, final ExcelAddress addr, final SmallTableTD values) throws ExcelException;
/**
* Reads values from Excel file and gives it back.
*
* @param xlFile Excel file
* @param addr Address where data should be inserted into
* @return Data Store of data
* @throws ExcelException thrown if exception occurs during runtime
*/
SmallTableTD getValueOfCells(final File xlFile, final ExcelAddress addr) throws ExcelException;
/**
* Discovers all user defined cell names in Excel file.
*
* @param xlFile Excel file
* @return List of Excel Addresses
* @throws ExcelException thrown if exception occurs during runtime
*/
ExcelAddress[] getUserDefinedCellNames(final File xlFile) throws ExcelException;
/**
* Returns a list of all discovered macros in Excel file.
*
* @param xlFile Excel file
* @return list of discovered macros
* @throws ExcelException thrown if exception occurs during runtime
*/
String[] getMacros(final File xlFile) throws ExcelException;
/**
* Runs a (VBA-)macro in Excel file.
*
* @param xlFile Excel file
* @param macroname run this macroname in Excel file
* @throws ExcelException thrown if exception occurs during runtime
*/
void runMacro(final File xlFile, final String macroname) throws ExcelException;
/**
* Recalculates all formulas in Excel file.
*
* @param xlFile Excel file
* @throws ExcelException thrown if exception occurs during runtime
*/
void recalculateFormulas(final File xlFile) throws ExcelException;
}