blob: 3c384e8ec545a5697ddf03a3f9be798142bd545a [file] [log] [blame]
package org.eclipse.rcptt.ecl.data.apache.poi.impl.internal.commands;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.rcptt.ecl.data.apache.poi.impl.internal.EclDataApachePOIImplPlugin;
import org.eclipse.rcptt.ecl.filesystem.EclFile;
public class ExcelFileService {
private static final String XLS_EXTENSION = "xls";
private static final String XLSX_EXTENSION = "xlsx";
public static Workbook createBook(EclFile file, String uri) throws CoreException {
Workbook book;
if (uri.endsWith(XLS_EXTENSION)) {
book = new HSSFWorkbook();
} else if (uri.endsWith(XLSX_EXTENSION)) {
book = new XSSFWorkbook();
} else {
throw new CoreException(EclDataApachePOIImplPlugin.createErr(
"Error getting extension of file %s. Only 'xls' and 'xslx' are supported.", file.toURI()));
}
return book;
}
public static Workbook readBook(EclFile file) throws CoreException {
Workbook book;
try {
FileInputStream stream = new FileInputStream(file.toFile());
try {
book = WorkbookFactory.create(stream);
} finally {
stream.close();
}
} catch (FileNotFoundException e) {
throw new CoreException(
EclDataApachePOIImplPlugin
.createErr(e, "File not found %s", file.toURI()));
} catch (InvalidFormatException e) {
throw new CoreException(
EclDataApachePOIImplPlugin
.createErr("Error getting extension of file %s. Only 'xls' and 'xslx' are supported.",
file.toURI()));
} catch (IOException e) {
throw new CoreException(
EclDataApachePOIImplPlugin
.createErr(e, "Error reading file %s", file.toURI()));
}
return book;
}
public static void writeBook(Workbook book, EclFile file) throws CoreException {
try {
FileOutputStream stream = new FileOutputStream(file.toFile());
book.write(stream);
stream.close();
} catch (IOException e) {
throw new CoreException(
EclDataApachePOIImplPlugin
.createErr(e, "Error writing file %s", file.toURI()));
}
}
public static String getCellValue(Cell cell) {
if (cell == null) {
return null;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case Cell.CELL_TYPE_NUMERIC:
String number = String.valueOf(cell.getNumericCellValue());
number = number.replaceAll(".0$", "");
return number;
case Cell.CELL_TYPE_BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case Cell.CELL_TYPE_FORMULA:
return "=" + cell.getCellFormula();
default:
return null;
}
}
}