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ファイルを作成する
次はexcelを作成し、いくつかの値を書き込みます.
上の方法は標準化されていますが、少し煩雑に見えますが、今は一つの方法で煩雑さを取り除きます.この方法はrowやcellを事前に作成する必要はなく,直接cteateCellを行えばよいが,プログラムでは自動的に判断し,存在しなければ作成する.
このcreateCellメソッドを呼び出す方法を見てみましょう
同時に、セル内の情報のフォーマット(中央など)を次のように設定します.
セルをマージする場合は、次の操作を行います.
この編はまずここまで!添付ファイルにpoi-3.2.jarパッケージがあります
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パッケージがあります