POIを使用してJavaからExcel出力を行う

本文介绍如何使用Java的POI库创建Excel文件。通过实例演示了从新建工作簿到设置单元格值的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 表形式のデータ保存には、CSV形式のテキストファイルを用いるのが一般的です。しかし、用途によっては、Microsoft Excelで作成したような見栄えの良い表形式での出力を求められることがあります。

 そこで、本稿では「POI」と呼ばれるJavaのライブラリを使用して、Excelファイルを出力する方法を紹介します。POIは、ExcelやWordなどの「Microsoft OLE 2複合ドキュメント形式」に準拠したファイルをJavaで扱うためのAPI群です。ここでは、POIの中でExcel出力を行う「HSSF」と呼ばれるコンポーネントを使用する例を紹介します。

POIによって生成されたExcelファイル

注:POIの入手先や必要なJARファイルについては、「サーバサイド技術の学び舎 - WINGS」にある「サーバサイド環境構築設定」を参照してください。

 以下は、先ほど示したExcelファイルをJavaから生成するためのプログラムです。

PoiSample.java
package to.msn.wings;

import java.io.FileOutputStream;

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

public class PoiSample {
    public static void main(String[] args) {
        try{
            //新規ワークブックを作成する
            HSSFWorkbook wb = new HSSFWorkbook();
            FileOutputStream fileOut 
            = new FileOutputStream("C:\\PoiSampleBook.xls");
            //新規ワークシートを作成する
            HSSFSheet sheet1 = wb.createSheet();
            HSSFSheet sheet2 = wb.createSheet();
            //作成したシート名を変更
            //日本語シート名を指定する場合には
            //エンコーディング設定は必須
            wb.setSheetName(0,"sheet1");    
            wb.setSheetName(1
                ,"シート2",HSSFWorkbook.ENCODING_UTF_16);
            //行オブジェクトの作成(行番号は0スタート)
            HSSFRow row2 = sheet1.createRow(1);
            //セルオブジェクトの作成(セル番号は0スタート)
            //引数はshort型でキャストしなければならない点に注意
            HSSFCell cellB2 = row2.createCell((short)1);
            HSSFCell cellC2 = row2.createCell((short)2);
            //セルに値を設定する
            cellB2.setCellValue("B2");
            //セルに日本語の値を設定する
            //日本語の値を指定する場合には
            //エンコーディング設定は必須
            cellC2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cellC2.setCellValue("C2日本語");
            //作成したワークブックを保存する
            wb.write(fileOut);
            fileOut.close();
            System.out.println(
                "Excelファイルの作成が完了しました!");
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("処理が失敗しました");
        }
    }
}

 Excelのオブジェクト操作には、下記のクラスを使用します。ブック、シート、行、セルから構成されるクラス構造は、Excelの構造を直観的に表しているものなので、分かりやすいでしょう。

POI(HSSF)に含まれる主要なクラス
クラス名説明
HSSFWorkbookExcelのワークブックを扱うクラス
HSSFSheetワークシートを扱うクラス
HSSFRow行を扱うクラス
HSSFCellセルを扱うクラス

 このサンプルプログラムの詳細については、コード内にあるコメントを参考にしてください。ここでは、POIを利用する際の定型的なコードの流れを以下に示しておきます。

  1. 新規ワークブックの作成(HSSFWorkbookクラス)
  2. 新規ワークシートの作成(HSSFWorkbook#createSheetメソッド)
  3. 対象列の取得(HSSFSheet#createRowメソッド)
  4. 対象セルの取得(HSSFRow#createCellメソッド)
  5. セル値の設定(HSSFCell#setCellValueメソッド)
  6. ファイル保存(HSSFWorkbook#writeメソッド)

 これが、POIを利用してExcelファイルを新規作成する場合の基本的な手続きになります。今後紹介する、より複雑なファイル出力例を説明する際の基本となりますので、上記のコードと照らし合わせて、しっかり理解しておいてください。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值