Jakarta POIJavaから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 参考書籍コメント
|