mengenUeberdeckung.tests.bib.ExcelSheet3.java Source code

Java tutorial

Introduction

Here is the source code for mengenUeberdeckung.tests.bib.ExcelSheet3.java

Source

/*
 * Dateiname      : ExcelSheet3.java
 * Letzte nderung: 2. Januar 2005
 * Autoren        : Dietmar Lippold, Michael Wohlfart
 * Copyright (C)  : Institut fr Intelligente Systeme Universitt Stuttgart,
 *                  2005
 *
 * This file is part of Lascer (http://lascer.berlios.de/).
 *
 * Lascer is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * Lascer 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 Lascer; if not, see <http://www.gnu.org/licenses/>.
 */

package mengenUeberdeckung.tests.bib;

import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Diese Klasse erzeugt eine Tabelle zu Datenstzen aus drei Werten.
 *
 * @author  Dietmar Lippold, Michael Wohlfart
 */
public class ExcelSheet3 {

    /**
     * Der Name dieser Tabelle.
     */
    private String tableName;

    /**
     * Die erste Zeile der berschrift fr die Tabelle.
     */
    private String header1;

    /**
     * Die zweite Zeile der berschrift fr die Tabelle.
     */
    private String header2;

    /**
     * Nummer der Zeile, in die als nchstes geschrieben wird (Zhlung der
     * Zeilen und Spalten beginnt bei 0).
     */
    private short line;

    /**
     * Tabelle in die geschrieben wird.
     */
    private HSSFSheet selectedSheet;

    /**
     * Workbook (Menge aus Sheets/Tabellen).
     */
    private HSSFWorkbook workbook;

    /**
     * Erzeugt eine Instanz zu den bergebenen Werten.
     *
     * @param tableName  Der Name dieser Tabelle.
     * @param header1    Der Text, der in der ersten Zeile des Headers
     *                   ausgegeben werden soll.
     * @param header2    Der Text, der in der zweiten Zeile des Headers
     *                   ausgegeben werden soll.
     */
    public ExcelSheet3(String tableName, String header1, String header2) {
        this.tableName = tableName;
        this.header1 = header1;
        this.header2 = header2;
    }

    /**
     * Diese Methode setzt den Tabellennamen und die berschriften fr die
     * Spalten einer Excel-Tabelle und initialisiert die Attribute
     * <CODE>workbook</CODE>, <CODE>selectedSheet</CODE> und <CODE>line</CODE>.
     */
    private void initSheet() {
        HSSFFont boldFont, italicFont; // verschiedene Schriftarten
        HSSFRow row; // Zeile
        HSSFCellStyle style; // Zellenattribute als style Objekt
        HSSFCell cell; // einzelnen Zelle

        // Zeilennummer auf Anfang setzen.
        line = 0;

        // Sheet anlegen.
        // Ein workbook scheint eine Menge von Excel-Sheets zu sein.
        workbook = new HSSFWorkbook();

        // Name im Excel Tab angeben.
        selectedSheet = workbook.createSheet(tableName);

        // Initialisierung der Schriftarten.
        boldFont = workbook.createFont();
        boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        italicFont = workbook.createFont();
        italicFont.setItalic(true);

        // Erste Header-Zeile in bold eintragen.
        row = selectedSheet.createRow(line);
        style = workbook.createCellStyle();
        style.setFont(boldFont);

        cell = row.createCell((short) 1);
        cell.setCellStyle(style);
        cell.setCellValue(header1);

        line++;

        // Zweite Header-Zeile in bold eintragen.
        row = selectedSheet.createRow(line);
        style = workbook.createCellStyle();
        style.setFont(boldFont);

        cell = row.createCell((short) 1);
        cell.setCellStyle(style);
        cell.setCellValue(header2);

        line++;

        // Leerzeile in Tabelle aufnehmen.
        row = selectedSheet.createRow(line);

        line++;

        // Spaltentitel in italic eintragen.
        row = selectedSheet.createRow(line);
        style = workbook.createCellStyle();
        style.setFont(italicFont);

        cell = row.createCell((short) 0);
        cell.setCellStyle(style);
        cell.setCellValue("problemname");

        cell = row.createCell((short) 1);
        cell.setCellStyle(style);
        cell.setCellValue("runtime");

        cell = row.createCell((short) 2);
        cell.setCellStyle(style);
        cell.setCellValue("solutionCost");

        line++;
    }

    /**
     * Diese Methode scheibt eine Zeile mit Messergebnissen an die durch den
     * Parameter <CODE>row</CODE> vorgegebene Zeile.
     *
     * @param result  Menge mit Messergebnissen.
     * @param row     Zeile, in die geschrieben werden soll.
     */
    private void setRow(ResultSet3 result, HSSFRow row) {
        HSSFFont plainFont;
        HSSFCellStyle style;
        HSSFCell cell;

        plainFont = workbook.createFont();
        style = workbook.createCellStyle();
        style.setFont(plainFont);

        cell = row.createCell((short) 0);
        cell.setCellStyle(style);
        cell.setCellValue(result.getProblemName());

        cell = row.createCell((short) 1);
        cell.setCellStyle(style);
        cell.setCellValue(result.getRuntime());

        cell = row.createCell((short) 2);
        cell.setCellStyle(style);
        cell.setCellValue(result.getSolutionCost());
    }

    /**
     * Liefert zu den bergebenen Datenstzen ein workbook, das die
     * zugehrige Excel-Tabelle enthlt.
     *
     * @param rows      Eine Liste von Datenstzen. Die Elemente sind vom Typ
     *                  <CODE>ResultSet3</CODE>.
     *
     * @return  Das workbook mit der erzeugten Tabelle.
     */
    public HSSFWorkbook generatedSheet(List rows) {
        ResultSet3 result;
        HSSFRow row;
        Iterator iterator;

        initSheet();

        // Messdaten eintragen.
        iterator = rows.iterator();
        while (iterator.hasNext()) {
            row = selectedSheet.createRow(line);
            result = (ResultSet3) iterator.next();
            setRow(result, row);
            line++;
        }

        return workbook;
    }
}