Java poi


インストール環境 OS:Microsoft Windows Me
インストール元 http://jakarta.apache.org/builds/jakarta-poi/release/bin/
バージョン jakarta-poi-1.5.1-final-bin.zip 17-Jun-2002 16:29 5.8M 
ファイル jakarta-poi-1.5.1-final-bin.zip 5,950KB
解凍 C:\jakarta-poi-1.5.1-final-bin 49.9MB
Jakarta POI http://jakarta.apache.org/poi/
POI Quick-guide http://www.terra-intl.com/jakarta/poi/hssf/quick-guide.html
 
コンポーネント
 POIFS(POI Filesystem) 共通API
 HSSF(Horrible Spreadsheet Format) Excel用
 HDF(Horrible Document Format) Word用
 HPSF(Horrible Property Set Format) 文書プロパティ(題名、最終更新日など)用
 
実行環境
OS:Microsoft Windows Me / Microsoft Excel 2000
 
明日のための其の壱 Excelの読み書き
 C:\javaに下記ファイル作成しJavaクラスの実行
 
ソースファイル:C:\java\poitest.java
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
public class poitest {
public static void main(String[] args) throws Exception {
    HSSFWorkbook workBook = new HSSFWorkbook(new FileInputStream("読込.xls"));
    System.out.println("Sheet" + workBook.getNumberOfSheets());
    // ワークシートのループ
    for(int i=0; i<workBook.getNumberOfSheets(); i++) {
        HSSFSheet workSheet = workBook.getSheetAt(i);
        System.out.println("-- " + workBook.getSheetName(i) + " --");
        // 行のループ
        for(int j=0; j<=workSheet.getLastRowNum(); j++) {
            HSSFRow row = workSheet.getRow(j);
            // 列のループ
            for(int k=0; k<row.getLastCellNum(); k++) {
                HSSFCell cell = row.getCell((short)k);
                // セルがNULLの場合(何も値が入っていない場合)は、表示処理を飛ばす
                if(cell == null)
                    continue;
                switch(cell.getCellType()) {
                    case HSSFCell.CELL_TYPE_STRING:
                        // セルの値が文字型の場合
                        System.out.println(cell.getStringCellValue());
                        break;
                    case HSSFCell.CELL_TYPE_NUMERIC:
                        // セルの値が数値型の場合
                        System.out.println(cell.getNumericCellValue());
                        break;
                    default:
                        System.out.println("...");
                }
            }
        }
    }
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");
    // Create a row and put some cells in it. Rows are 0 based.
    HSSFRow row = sheet.createRow((short)2);
    // Create a cell and put a value in it.
    HSSFCell cell = row.createCell((short)0);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("漢字@〜");
    // Or do it on one line.
    row.createCell((short)1).setCellValue(1.2);
    row.createCell((short)2).setCellValue("This is a string");
    row.createCell((short)3).setCellValue(true);
    cell = row.createCell((short)4);
    //cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell.setCellValue("漢字A−");
    // Write the output to a file
    FileOutputStream fileOut = new FileOutputStream("書込.xls");
    wb.write(fileOut);
    fileOut.close();
}
}
 
コンパイルファイル:C:\java\cpl.bat
set classpath=.;C:\jakarta-poi-1.5.1-final-bin\build\jakarta-poi-1.5.1-final-20020615.jar
C:\j2sdk1.4.0_01\bin\javac -deprecation poitest.java
pause
 
実行ファイル:C:\java\run.bat
set classpath=.;C:\jakarta-poi-1.5.1-final-bin\build\jakarta-poi-1.5.1-final-20020615.jar
C:\j2sdk1.4.0_01\bin\java poitest
pause
 
実行結果:DOSプロンプト
C:\java>set classpath=.;C:\jakarta-poi-1.5.1-final-bin\build\jakarta-poi-1.5.1-f
inal-20020615.jar

C:\java>C:\j2sdk1.4.0_01\bin\java poitest
Sheet1
-- testpoi --
0.1
123.0
character
@
全角

C:\java>pause
続けるにはどれかキーを押してください . . .
 
Excel
 
明日のための其の弐 Excelのオブジェクトコピー
 C:\javaに下記ファイル作成しJavaクラスの実行
 
ソースファイル:C:\java\poitest.java
 
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.*;
class poitest {
public static void main(String[] args) throws Exception {
    HSSFWorkbook wb = null;
    HSSFCell cell = null;
    HSSFRow row = null;
    try {
        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("c:\\java\\in.xls"));
        wb = new HSSFWorkbook(fs);
        HSSFSheet sheet = wb.getSheetAt(0);
        System.out.println("Sheet Name " + wb.getSheetName(0));
        row = sheet.createRow((short)0);    //行
        cell = row.createCell((short)0);       //列
        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue("漢字@〜");
        FileOutputStream fileOut = new FileOutputStream("c:\\java\\out.xls");
        wb.write(fileOut);
        fileOut.close();
        System.out.println("End");
    } catch (Exception e) {
        System.out.println("Exception");
    }
}
}
 
サンプル1
public static void main(String[] args) throws Exception {
     HSSFWorkbook wb = new HSSFWorkbook();
     HSSFSheet sheet = wb.createSheet("new sheet");
     HSSFCellStyle style = wb.createCellStyle();
     for (int i = 0 ; i < 1000 ; i++) {
          for (int j = 0 ; j < 15 ; j++) {{llStyle();;Exception
               HSSFRow row = sheet.createRow((short)i);
               HSSFCell cell = row.createCell((short)j);
               cell.setCellType(HSSFCell.CELL_TYPE_STRING);
               cell.setEncoding(HSSFCell.ENCODING_UTF_16);
               cell.setCellValue("");
               style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
               cell.setCellStyle(style);
               style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
               style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
               style.setBorderRight(HSSFCellStyle.BORDER_THIN);
               style.setBorderTop(HSSFCellStyle.BORDER_THIN);
               cell.setCellStyle(style);
          }
     }
    FileOutputStream fileOut = new FileOutputStream( "d:\\down\\workbook.xls" );
    wb.write( fileOut );
    fileOut.close();
    System.out.println("end");
}
 
サンプル2
public static void main(String[] args) throws Exception {
     HSSFWorkbook wb = new HSSFWorkbook();
     HSSFSheet sheet = wb.createSheet("sheet1");
     HSSFRow row = null;
     HSSFCell cell = null;
     HSSFCellStyle cellStyle = null;

     row = sheet.createRow((short)0);

     cellStyle = wb.createCellStyle();
     cellStyle.setDataFormat(HSSFDataFormat.getFormat("0.00"));
     cell = row.createCell((short)0);
     cell.setCellValue(6.9);
     cell.setCellStyle(cellStyle);

     cellStyle = wb.createCellStyle();
     cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));
     cell = row.createCell((short)1);
     cell.setCellValue(new Date());
     cell.setCellStyle(cellStyle);

     row.createCell((short) 2).setCellValue("a string");
     row.createCell((short) 3).setCellValue(true);

     cell = row.createCell((short)4);
     cell.setCellType(HSSFCell.CELL_TYPE_STRING);
     cell.setEncoding(HSSFCell.ENCODING_UTF_16);
     cell.setCellValue("漢字@〜");

    FileOutputStream fileOut = new FileOutputStream( "d:\\down\\workbook.xls" );
    wb.write( fileOut );
    fileOut.close();
    System.out.println("end");
}