ブロガーの実験室スポンサー広告
> Google App EngineでExcel出力する> ブロガーの実験室パソコンな日々
> Google App EngineでExcel出力する
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--.--.--|スポンサー広告||TOP↑
http://koma.webso.jp/2010/06/google-app-engineexcel.html

Google App EngineでExcel出力する

Google App Engine(以下はGAEと称する)でjexcelapiを利用して、Excelを作成してダウンロードする処理を実装しました。

GAEにはホワイトリストがありますの、このリスト以外のクラスがサポートされていません、例えばApache POIはExcel作成によく使われるんですが、GAE環境にはなかなか使えません。(多分Apache POIがJava低レベルAPIを使っているかもしれません)いろいろ調べると、jexcelapiが見つかりました、これを利用して問題なくExcel ファイルが作成でき、ダウンロードすることもできるようになりました。このサンプルを作成しましたので、ご覧ください。


public class GaesampleServlet extends HttpServlet
{
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException
    {
        try
        {
            // Get Excel Data
            ByteArrayOutputStream bytes = generateExcelReport();

            // Initialize Http Response Headers
            resp.setHeader("Content-disposition", "attachment; filename=exportUsers.xls");
            resp.setContentType("application/vnd.ms-excel");

            // Write data on response output stream
            if (bytes != null)
            {
                resp.getOutputStream().write(bytes.toByteArray());
            }
        }
        catch (WriteException e)
        {
            resp.setContentType("text/plain");
            resp.getWriter().print("An error as occured");
        }
    }

    public ByteArrayOutputStream generateExcelReport() throws IOException, WriteException
    {
        // Stream containing excel data
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

        // Create Excel WorkBook and Sheet
        WritableWorkbook workBook = Workbook.createWorkbook(outputStream);
        WritableSheet sheet = workBook.createSheet("User List", 0);

        // Generates Headers Cells
        WritableFont headerFont = new WritableFont(WritableFont.TAHOMA, 12, WritableFont.BOLD);
        WritableCellFormat headerCellFormat = new WritableCellFormat(headerFont);
        headerCellFormat.setBackground(Colour.PALE_BLUE);
        sheet.addCell(new Label(1, 1, "LastName", headerCellFormat));
        sheet.addCell(new Label(2, 1, "FirstName", headerCellFormat));

        // Generates Data Cells
        WritableFont dataFont = new WritableFont(WritableFont.TAHOMA, 12);
        WritableCellFormat dataCellFormat = new WritableCellFormat(dataFont);
        int currentRow = 2;
        sheet.addCell(new Label(1, currentRow, "aaaaa", dataCellFormat));
        sheet.addCell(new Label(2, currentRow, "bbbbb", dataCellFormat));

        // Write & Close Excel WorkBook
        workBook.write();
        workBook.close();

        return outputStream;
    }
}


2010.06.29|パソコンな日々コメント(0)TOP↑
名前:
コメントタイトル:
メールアドレス:
URL:
コメント:

パスワード:
管理人だけに表示:
管理者にだけ表示を許可
カテゴリー
最近の記事
最近のコメント
最近のトラックバック
ブログ検索
管理人のブログ一覧
管理人へメール

名前:
メール:
件名:
本文:

月別アーカイブ
プロフィール

やまもも実験室

Author:やまもも実験室
FC2ブログへようこそ!

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。