Jakarta POI

JavaからExcelを操作できます。Jcomはcomを経由して、Excelオブジェクトを操作していましたが、こちらはExcelがインストールされてなくてもExcelファイルが操作できます。すっかりJcomはつかわなくなりましたが、POIがでるまで大変便利に使わせていただきました。poi-bin-3.0.1-FINAL-20070705.zipがでてますね。(2007/09/10)

設定

http://jakarta.terra-intl.com/poi/のダウンロードから poi-bin-2.5.1-final-20040804.zipをダウンロードしました。 http://www.apache.org/dist/jakarta/poi/release/bin/

サンプル

テンプレートのページを作っておき、それを複製して値をセットして出来上がったら新しいExcelファイルとして保存してます。

	// 印刷
	public boolean Print() {
		try {
			intPage = 0;
			FileInputStream ExcelFile = new FileInputStream("hoge.xls");
			POIFSFileSystem fs = new POIFSFileSystem(ExcelFile);
			HSSFWorkbook workbook = new HSSFWorkbook(fs);
			HSSFSheet newSheet = workbook.getSheetAt(0);
			// 先に次ページを複製 図形はだめみたい。JExcelApiはできるそうな。
			workbook.cloneSheet(intPage);
			//シート名をセット
			workbook.setSheetName(intPage, String.valueOf(intPage + 1));
			// 選択
			workbook.getSheetAt(intPage).setSelected(true);
			newSheet = workbook.getSheetAt(intPage);
			// 各セルをマージする。
			setMerge(newSheet);
			//値をセット
			setCellValue(newSheet, 1, 2, "ほげ");
			//テンプレートページを消す
			workbook.removeSheetAt(intPage + 1);
			//新しいファイルに書き込み
			FileOutputStream out = new FileOutputStream("hogenew.xls");
			workbook.write(out);
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	// セルのマージ
	private void setMerge(HSSFSheet newSheet) {
		// タイトル Row1Col2からRow1Col4までをマージしている。
		newSheet.addMergedRegion(new Region(1 - 1, (short) (2 - 1), 1 - 1, (short) (4 - 1)));
	}
	//値をセット 以下はオーバロード
	private void setCellValue(HSSFSheet newSheet, int Row, int Col, String value) {
		if (value == null) {
			value = " ";
		}
		newSheet.getRow(Row - 1).getCell((short) (Col - 1)).setEncoding(HSSFCell.ENCODING_UTF_16); //日本語用
		newSheet.getRow(Row - 1).getCell((short) (Col - 1)).setCellValue(value);
	}
	private void setCellValue(HSSFSheet newSheet, int Row, int Col, int value) {
		newSheet.getRow(Row - 1).getCell((short) (Col - 1)).setCellValue(value);
	}
	private void setCellValue(HSSFSheet newSheet, int Row, int Col, long value) {
		newSheet.getRow(Row - 1).getCell((short) (Col - 1)).setCellValue(value);
	}
	private void setCellValue(HSSFSheet newSheet, int Row, int Col, float value) {
		newSheet.getRow(Row - 1).getCell((short) (Col - 1)).setCellValue(value);
	}

リンク

http://www.stackasterisk.jp/tech/java/poi01_01.jsp

参考書籍

コメント

  • #comment

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-09-10 (月) 07:01:00 (6093d)