Java処理Excel全解一


お客様のニーズに応じて、「お客様が提供するExcelファイルの処理を要求している」ということがよくあります.Excelファイルの処理に対して、比較的完璧な解決策はpoiを使って処理することです.poiはApacheのJakataプロジェクトのPOIプロジェクトであり,現在では比較的成熟したHSSFインタフェースであり,MSExcelオブジェクトを処理している.Excelファイルを処理する以上、まずExcelの構成を理解してください.
1つのExcelファイルは1つのworkbook(HSSFWorkbook)に対応し、1つのworkbookは複数のsheet(HSSFet)から構成され、1つのsheetは複数のrow(HSSFRow)から構成され、1つのrowは複数のcell(HSSFCell)から構成される.Excelの構成を理解した後、次にPOIに対応するExcelを処理するためのオブジェクトを理解します.
参照
HSSFWorkbook          Excelのドキュメントオブジェクト
HSSFSheet             Excelのフォーム
HSSFRow               Excelの行
HSSFCell              Excelの格子単位
HSSFFont              Excelのフォント
HSSFDataFormat        日付書式
HSSFHeader            sheetヘッダ
HSSFFooter            sheetテール(印刷時のみ効果が見られます)
HSSFCellStyle         cellスタイル
HSSFDateUtil          日付
HSSFPrintSetup        印刷
HSSFErrorConstants    エラーメッセージテーブル
詳細については、apache(www.apache.org)からpoi.jar.をダウンロードし、APIドキュメントを参照してください.
簡単なexampleを次に示します.
空のxlsファイルを作成する

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class createExcel {
   public static void main(String[] args) throws IOException {
	HSSFWorkbook workbook = new HSSFWorkbook();
	FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
	workbook.write(fileOut);
	fileOut.close();
	}
}

次はexcelを作成し、いくつかの値を書き込みます.

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;


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

public class CreateCells {
 
	public static void main(String args[]) throws IOException{
		HSSFWorkbook workbook = new HSSFWorkbook(); //    HSSFWorkbook  
		HSSFSheet sheet =workbook.createSheet("new sheet"); //    sheet  
		HSSFRow row = sheet.createRow((short)0);
		// sheet     ,     (   ,        )
		HSSFCell cell = row.createCell((short)0);
		// row    cell(   ),     
		
		cell.setCellValue(1);//  cell       
		row.createCell((short)1).setCellValue(1.2);//  cell      
		row.createCell((short)2).setCellValue("test");//  cell      
		row.createCell((short)3).setCellValue(true);//   cell      
		
		HSSFCellStyle cellStyle = workbook.createCellStyle();//    cell  
		cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); //  cell          
		HSSFCell dCell = row.createCell((short)4);
		dCell.setCellValue(new Date()); //  cell       
		dCell.setCellStyle(cellStyle);  //   cell       
		HSSFCell csCell = row.createCell((short)5);
		csCell.setCellValue("    _chinese Words Test");
		FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
		workbook.write(fileOut);
		fileOut.close();
	System.out.println("-------------------");
	}
}

上の方法は標準化されていますが、少し煩雑に見えますが、今は一つの方法で煩雑さを取り除きます.この方法はrowやcellを事前に作成する必要はなく,直接cteateCellを行えばよいが,プログラムでは自動的に判断し,存在しなければ作成する.

	/**
	 * @param workbook       
	 * @param row         
	 * @param col       cell           
	 * @param align          
	 * @param val              
	 */
	private static void createCell(HSSFWorkbook workbook,HSSFRow row,short col,short align,String val){
		HSSFCell cell = row.createCell(col);
		cell.setCellValue(val);
		HSSFCellStyle cellStyle = workbook.createCellStyle();
		cellStyle.setAlignment(align);
		cell.setCellStyle(cellStyle);
	}

このcreateCellメソッドを呼び出す方法を見てみましょう

 HSSFRow row = sheet.createRow((short)1);
 createCell(workbook,row,(short)0,HSSFCellStyle.ALIGN_CENTER_SELECTION,"TEXTID");

同時に、セル内の情報のフォーマット(中央など)を次のように設定します.

   HSSFCellStyle cellstyle = workbook.createCellStyle();
   cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
   cell.setCellStyle(cellstyle);

セルをマージする場合は、次の操作を行います.

 sheet.addMergedRegion(new Region(1,(short)1,2,(short)4));

この編はまずここまで!添付ファイルにpoi-3.2.jarパッケージがあります