Apache-poi-spreadsheets

提供:Dev Guides
移動先:案内検索

Apache POI –スプレッドシート

この章では、スプレッドシートを作成し、Javaを使用して操作する方法について説明します。 スプレッドシートはExcelファイルのページです。特定の名前の行と列が含まれています。

この章を完了すると、スプレッドシートを作成し、読み取り操作を実行できるようになります。

スプレッドシートを作成する

まず、前の章で説明した参照クラスを使用してスプレッドシートを作成しましょう。 前の章に従うことで、最初にワークブックを作成し、次にシートを作成できます。

次のコードスニペットを使用して、スプレッドシートを作成します。

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

スプレッドシートの行

スプレッドシートにはグリッドレイアウトがあります。 行と列は特定の名前で識別されます。 列はアルファベットで識別され、行は数字で識別されます。

次のコードスニペットを使用して行を作成します。

XSSFRow row = spreadsheet.createRow((short)1);

スプレッドシートに書き込む

従業員データの例を考えてみましょう。 ここでは、従業員データは表形式で提供されます。

Emp Id Emp Name Designation
Tp01 Gopal Technical Manager
TP02 Manisha Proof Reader
Tp03 Masthan Technical Writer
Tp04 Satish Technical Writer
Tp05 Krishna Technical Writer

次のコードは、上記のデータをスプレッドシートに書き込むために使用されます。

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

     //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook();

     //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

     //Create row object
      XSSFRow row;

     //This data needs to be written (Object[])
      Map < String, Object[] > empinfo =
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });

     //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

     //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

上記のJavaコードを Writesheet.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-

$javac Writesheet.java
$java Writesheet

現在のディレクトリに Writesheet.xlsx という名前のExcelファイルを生成するためにコンパイルおよび実行され、コマンドプロンプトに次の出力が表示されます。

Writesheet.xlsx written successfully
*Writesheet.xlsx* ファイルは次のようになります。

ライトシート

スプレッドシートから読む

入力として上記の Writesheet.xslx というExcelファイルを考えてみましょう。 次のコードを確認してください。スプレッドシートからデータを読み取るために使用されます。

import java.io.File;
import java.io.FileInputStream;

import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));

      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();

      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();

         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();

            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;

               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

上記のコードを Readsheet.java ファイルに保存し、次のようにコマンドプロンプトからコンパイルして実行します。

$javac Readsheet.java
$java Readsheet

システム環境がPOIライブラリで構成されている場合、コマンドプロンプトで次の出力を生成するためにコンパイルおよび実行されます。

EMP ID   EMP NAME       DESIGNATION
 tp01     Gopal       Technical Manager
 tp02     Manisha     Proof Reader
 tp03     Masthan     Technical Writer
 tp04     Satish      Technical Writer
 tp05     Krishna     Technical Writer