Java tutorial
/* * Copyright (C) 2000 - 2009 TagServlet Ltd * * This file is part of Open BlueDragon (OpenBD) CFML Server Engine. * * OpenBD is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * Free Software Foundation,version 3. * * OpenBD is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenBD. If not, see http://www.gnu.org/licenses/ * * Additional permission under GNU GPL version 3 section 7 * * If you modify this Program, or any covered work, by linking or combining * it with any of the JARS listed in the README.txt (or a modified version of * (that library), containing parts covered by the terms of that JAR, the * licensors of this Program grant you additional permission to convey the * resulting work. * README.txt @ http://www.openbluedragon.org/license/README.txt * * http://www.openbluedragon.org/ */ package org.alanwilliamson.openbd.plugin.spreadsheet; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.naryx.tagfusion.cfm.engine.cfData; import com.naryx.tagfusion.cfm.engine.dataNotSupportedException; public class cfSpreadSheetData extends cfData implements java.io.Serializable { private static final long serialVersionUID = 1L; private Workbook workbook; private String activeSheetName = null; private Sheet activeSheetObj = null; public cfSpreadSheetData(File inputFile) throws IOException { FileInputStream in = new FileInputStream(inputFile); try { if (inputFile.getName().toLowerCase().endsWith(".xls")) { workbook = new HSSFWorkbook(in); } else if (inputFile.getName().toLowerCase().endsWith(".xlsx")) { workbook = new XSSFWorkbook(in); } else throw new IOException("file format not supported (.xls/.xlsx only)"); } finally { if (in != null) { try { in.close(); } catch (Exception e) { } } } activeSheetObj = workbook.getSheetAt(0); activeSheetName = activeSheetObj.getSheetName(); } public cfSpreadSheetData(boolean bXLSX, String _activeSheet) { workbook = bXLSX ? new XSSFWorkbook() : new HSSFWorkbook(); activeSheetName = _activeSheet; activeSheetObj = workbook.createSheet(activeSheetName); activeSheetObj.setPrintGridlines(true); activeSheetObj.setDisplayGridlines(true); workbook.setActiveSheet(0); workbook.setSelectedTab(0); } public Workbook getWorkBook() { return workbook; } public Sheet getActiveSheet() { return activeSheetObj; } public String getActiveSheetName() { return activeSheetName; } public void deleteSheet(String sheetName) { if (workbook.getNumberOfSheets() == 1) return; Sheet sheet = workbook.getSheet(sheetName); if (sheet != null) { workbook.removeSheetAt(workbook.getSheetIndex(sheet)); activeSheetObj = workbook.getSheetAt(0); if (activeSheetObj != null) { activeSheetName = activeSheetObj.getSheetName(); } } } public void setActiveSheet(int sheetNo) { Sheet sheet = workbook.getSheetAt(sheetNo); if (sheet != null) { workbook.setActiveSheet(sheetNo); workbook.setSelectedTab(sheetNo); activeSheetName = sheet.getSheetName(); activeSheetObj = sheet; } } public void setActiveSheet(String sheetName) { Sheet sheet = workbook.getSheet(sheetName); if (sheet != null) { workbook.setActiveSheet(workbook.getSheetIndex(sheet)); workbook.setSelectedTab(workbook.getSheetIndex(sheet)); activeSheetName = sheetName; activeSheetObj = sheet; } } /* * Writes the current workbook out to the file system */ public void write(File destinationFile, String password) throws IOException { if (password != null && password.length() > 0 && workbook instanceof HSSFWorkbook) { ((HSSFWorkbook) workbook).writeProtectWorkbook(password, ""); } FileOutputStream out = null; try { out = new FileOutputStream(destinationFile); workbook.write(out); } finally { if (out != null) { try { out.close(); } catch (IOException ioe) { } } } } /* * Writes the spreadsheet object to a byte array */ public byte[] write() throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(32000); workbook.write(out); return out.toByteArray(); } /* -------------------------------------------- * Methods from the cfData class */ public byte getDataType() { return CFJAVAOBJECTDATA; } public String getDataTypeName() { return "spreadsheet"; } public String getString() throws dataNotSupportedException { throw new dataNotSupportedException("Cannot convert spreadsheet data to string"); } public void dump(java.io.PrintWriter out) { dump(out, "", -1); } public void dump(java.io.PrintWriter out, String _label, int _top) { out.write("<table class='cfdump_table_struct'><tr><th class='cfdump_th_struct' colspan='2'>"); if (_label.length() > 0) out.write(_label + " - "); out.write("spreadsheet</th></tr>"); out.write("<tr><td class='cfdump_td_struct'>XLSX</td><td class='cfdump_td_value'>"); out.write(String.valueOf(workbook instanceof XSSFWorkbook)); out.write("</td></tr>"); out.write("<tr><td class='cfdump_td_struct'>Active Sheet</td><td class='cfdump_td_value'>"); out.write(activeSheetName); out.write("</td></tr>"); out.write("</table>"); } public boolean equals(Object o) { if (o instanceof cfSpreadSheetData) { return true; } else return false; } }