3

ビューに 5 列の SWT テーブルがあります。

私がやりたいことは、そのテーブルからデータを Excel スプレッドシートとしてエクスポートすることです。私は次のことをしたいです。

  1. 表の列ヘッダーがスプレッドシートに表示されます。

  2. すべてのデータには、選択したフォントが必要です。

  3. すべてのスプレッドシートのセルは、選択した幅を持つ必要があります。

  4. すべてのセル形式は「テキスト」にする必要があります。

誰かが私を正しい方向に向けることができますか? ありがとうございました。

4

3 に答える 3

1

Apache POI を使用して、TableViewer のコンテンツを Excel ワークブックにダンプし、良好な結果を得ました。

特定の TableViewer のコンテンツを含む XSSFWorkbook を作成するサンプル メソッドを次に示します。セルのスタイル設定と列幅の自動サイズ変更の例が含まれています。

コードの他の場所で使用されているため、tableColumnNames という文字列の配列に列名があることに注意してください。その配列を使用するだけで便利ですが、TableViewer からそれらを取得することもできます。

private XSSFWorkbook createWorkbookFromTable(TableViewer table) {
    // create a workbook
    XSSFWorkbook wb = new XSSFWorkbook();

    // add a worksheet
    XSSFSheet sheet = wb.createSheet("My Table Data");

    // shade the background of the header row
    XSSFCellStyle headerStyle = wb.createCellStyle();
    headerStyle.setFillForegroundColor(IndexedColors.LEMON_CHIFFON.getIndex());
    headerStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
    headerStyle.setBorderTop(CellStyle.BORDER_THIN);
    headerStyle.setBorderBottom(CellStyle.BORDER_THIN);
    headerStyle.setBorderLeft(CellStyle.BORDER_THIN);
    headerStyle.setBorderRight(CellStyle.BORDER_THIN);
    headerStyle.setAlignment(HorizontalAlignment.CENTER);

    // add header row
    Table table = table.getTable();
    TableColumn[] columns = table.getColumns();
    int rowIndex = 0;
    int cellIndex = 0;
    XSSFRow header = sheet.createRow((short) rowIndex++);
    for (TableColumn column : columns) {
        String columnName = column.getText();
        XSSFCell cell = header.createCell(cellIndex++);
        cell.setCellValue(column.getText());
        cell.setCellStyle(headerStyle);
    }

    // add data rows
    TableItem[] items = table.getTable().getItems();
    for (TableItem item : items) {
        // create a new row
        XSSFRow row = sheet.createRow((short) rowIndex++);
        cellIndex = 0;

        for (int i = 0; i < columns.length; i++) {
            // create a new cell
            String columnName = tableColumnNames[i];
            XSSFCell cell = row.createCell(cellIndex++);

            // set the horizontal alignment (default to RIGHT)
            XSSFCellStyle cellStyle = wb.createCellStyle();
            ha = HorizontalAlignment.RIGHT;
            cellStyle.setAlignment(ha);
            cell.setCellStyle(cellStyle);

            // set the cell's value
            String text = item.getText(i);
            cell.setCellValue(text);
        }
    }

    // autofit the columns
    for (int i = 0; i < columns.length; i++) {
        sheet.autoSizeColumn((short) i);
    }

    return wb;
}

XSSFWorkbook を取得したら、次のようにファイルにダンプできます。

public void dumpWorkbookToAFile(XSSFWorkbook wb, String filename) {
    try {
        FileOutputStream fos = new FileOutputStream(filename);
        wb.write(fos);
        fos.close();
        MessageDialog.openInformation(shell,
            "Save Workbook Successful",
            "Workbook saved to the file:\n\n" + filename);
    } catch (IOException ioe) {
        ioe.printStackTrace();
        String msg = ioe.getMessage();
        MessageDialog.openError(shell, 
            "Save Workbook Failed",
            "Could not save workbook to the file:\n\n" + msg);
    }
}
于 2012-12-21T15:12:11.900 に答える
0

アプリケーションの要件と複雑さに応じて、これらのフレームワークのいずれかを使用して、Java アプリケーションで Excel シートを作成できます。1. http://poi.apache.org/spreadsheet/index.html 2. http://extentech.com/estore/product_detail.jsp?product_group_id=1

于 2012-12-21T11:24:51.633 に答える
0

プログラムでスプレッドシートを作成するには、OpenOffice SDK を使用します。ただし、ユーザーがビューで作業している間は、インストールしてサービスを実行する必要があります。あなたのケースでそれが受け入れられるかどうかはわかりません。

于 2012-12-21T11:11:07.410 に答える