(Translated by https://www.hiragana.jp/)
最新ExcelフォーマットをJavaで操作するための基礎:XMLを取り込んだ最新Officeフォーマットとは(後編)(1/2 ページ) - @IT

最新さいしんExcelフォーマットをJavaで操作そうさするための基礎きそXMLをんだ最新さいしんOfficeフォーマットとは(後編こうへん(1/2 ページ)

» 2008ねん08がつ18にち 0000ふん 公開こうかい
[Girier陽子ようし株式会社かぶしきがいしゃ 東芝とうしば ソフトウェア技術ぎじゅつセンター]

XMLをんだExcelならJava標準ひょうじゅんAPIで操作そうさできる!

 ほん特集とくしゅうは、「Office 2007」よりファイル形式けいしきとして使つかわれている「Office Open XML」ファイルフォーマット(以下いか、Open XML)について解説かいせつをする特集とくしゅう記事きじです。前編ぜんぺんの「Officeファイルのちと最新さいしんがた、そして標準ひょうじゅん」では、XMLんだOpen XMLのちやOpenOfficeとの比較ひかく標準ひょうじゅんながれ、仕様しよう概要がいようについて紹介しょうかいしました。

 後編こうへんは、ExcelれいJava最新さいしんOfficeフォーマットファイルのデータを操作そうさする方法ほうほう紹介しょうかいします。まず、ワークシートが1つで、テキストと数値すうちくだり入力にゅうりょくしたシンプルなExcelファイルを作成さくせいしてみます。つぎに、DOM操作そうさようのJava標準ひょうじゅんAPIである「org.w3c.dom」「javax.xml.parsers」「javax.xml.transform」パッケージなどを使つかって、作成さくせいしたExcelファイルの各行かくこう参照さんしょうしたり、データをさらに追加ついかしたり、データの一部いちぶ更新こうしん削除さくじょなどってみます。

 Java標準ひょうじゅんAPIによるXML操作そうさ基本きほんりたい読者どくしゃは、すこ情報じょうほうふるいですが、以下いか連載れんさい参考さんこうにしてください。

サンプルExcelファイルをてみよう

 今回こんかい最初さいしょ作成さくせいするExcelファイルのサンプルは、1のようになります。

図1 今回作成するサンプルのExcelファイル 1 今回こんかい作成さくせいするサンプルのExcelファイル

 Aれつ:テキストデータ、Bれつ数値すうち、Cれつ数値すうちからなるくだり入力にゅうりょくしてみます。ソースコードのフォルダ構成こうせいは、つぎのようになります。

図1 OpenOffice.org日本語サイト 2 ソースコードのフォルダ構成こうせい

 まずは、2のソースコードをこちらよりダウンロードしておいてください。

サンプルプログラムの注意ちゅうい事項じこう

 本稿ほんこうのサンプルプログラムについては、以下いか注意ちゅうい事項じこうがありますので、けてください。

  • Java動作どうさ確認かくにん環境かんきょうは、JDK 6 Update 5ですJDK 6 Update 5です
  • Office 2007でdocx/xlsx/pptxサンプルファイルの編集へんしゅう保存ほぞんおこなうと、もとのサンプルにないコードが挿入そうにゅうされます
  • テキストエディタでサンプルのXMLファイルを編集へんしゅうする場合ばあい文字もじコードをUTF-8に設定せっていしてください。エンコーディングがただしく設定せっていされないと、Office 2007でdocx/xlsx/pptxファイルがけない場合ばあいがあります文字もじコードUTF-8設定せっていしてください。エンコーディングがただしく設定せっていされないと、Office 2007でdocx/xlsx/pptxファイルがけない場合ばあいがあります
  • プログラムをコンパイルするさい、コンパイル環境かんきょうがUTF-8ではない場合ばあい、『javac -encoding UTF-8 OXMLCreator.java』のように、コンパイル文字もじコード(エンコーディング)を指定していしてくださいコンパイルするさい、コンパイル環境かんきょうがUTF-8ではない場合ばあい、『javac -encoding UTF-8 OXMLCreator.java』のように、コンパイル文字もじコード(エンコーディング)を指定していしてください
  • サンプルファイルは専用せんようになっています。必要ひつようおうじ、解除かいじょしてください専用せんようになっています。必要ひつようおうじ、解除かいじょしてください
  • サンプルプログラムは自己じこ責任せきにんによりご利用りようください

 Javaの文字もじエンコーディングについてくわしくりたい読者どくしゃは、以下いか記事きじ参考さんこうにしてください。

Open XMLのExcelファイルを作成さくせいするには?

 ダウンロードして解凍かいとうしたフォルダのなかから、テキストエディタでOpen XMLのExcelファイルを作成さくせいする「OXMLCreator.java」ファイルをひらいてください。OXMLCreator.javaの処理しょりながれは、つぎのようになります。

23 oxml.startFile();
24 oxml.insertData("せい品名ひんめい1", 4, 400);           /* くだり追加ついか */
25 oxml.insertData("せい品名ひんめい2", 10, 1200);         /* くだり追加ついか */
26 oxml.insertData("せい品名ひんめい3", 3, 900);           /* くだり追加ついか */
27 oxml.endFile();
28 oxml.createUTF8file((String)fileList.get(4));/* sheet1.xml生成せいせい */
29 oxml.createZIPfile(fileList,"sample.xlsx"); /* sample.xlsx生成せいせい */

  1. sheet1.xmlファイルに内容ないようをStringBufferへ保存ほぞん(23?27ぎょう
  2. 1.で保存ほぞんしたデータからsheet1.xmlファイルを生成せいせい(28ぎょう
  3. あらかじめ保存ほぞんしておいた[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮あっしゅくし、sample.xlsx生成せいせい(29ぎょう

 Java標準ひょうじゅんAPIによるZIP圧縮あっしゅくについてくわしくりたい読者どくしゃは、以下いか記事きじ参考さんこうにしてください。

sample.xlsxにふくむファイルの構成こうせいめる

15 ArrayList<String> fileList = new ArrayList<String>();
16 fileList.add("[Content_Types].xml");
17 fileList.add("_rels/.rels");
18 fileList.add("xl/workbook.xml");
19 fileList.add("xl/_rels/workbook.xml.rels");
20 fileList.add("xl/worksheets/sheet1.xml");

 16〜20ぎょうでZIPファイル(sample.xlsx)にふくむファイルのファイルめいとパスを追加ついかします。

くだりデータの追加ついか

38 void insertData(String a, int b, int c) {
39 rowNum++;
40 sheetContent.append("
          <row r=\""+rowNum+"\">\r\n"
41     +"   <c r=\"A"+rowNum+"\" t=\"inlineStr\">\r\n"     /* Aれつ*/
42     +"     <is>\r\n"
43     +"       <t>"+a+"</t>\r\n"              /* テキストデータ */
44     +"     </is>\r\n"
45     +"   </c>\r\n"
46     +"   <c r=\"B"+rowNum+"\">\r\n"                    /* Bれつ */
47     +"     <v>"+b+"</v>\r\n"                    /* 数値すうちデータ */
48     +"   </c>\r\n"
49     +"   <c r=\"C"+rowNum+"\">\r\n"                    /* Cれつ */
50     +"     <v>"+c+"</v>\r\n"                    /* 数値すうちデータ */
51     +"   </c>\r\n"
52     +" </row>\r\n");
53 }

 insertDataの引数ひきすうじゅん設定せっていしたAれつのテキスト、Bれつ数値すうち、Cれつ数値すうちをそれぞれStringBufferかたのsheetContent変数へんすうくだりデータ1ぎょうぶんのデータとして保存ほぞんします。41〜45ぎょうでAれつ、46?48ぎょうでBれつ、49?51ぎょうでCれつ設定せっていします。

sheet1.xmlの生成せいせい

60 void createUTF8file(String fileName){
61     try {
62         BufferedOutputStream outstream
               = new BufferedOutputStream(
               new FileOutputStream(fileName));
63         outstream.write(sheetContent.toString()
               .getBytes("UTF-8"));/* 文字もじコード指定してい */
64         outstream.flush();
65         outstream.close();
66     }catch (Exception e) {
67         e.printStackTrace();
68     }
69 }

 StringBufferがたのsheetContent変数へんすう保存ほぞんしたデータからsheet1.xmlファイルを生成せいせいします。63ぎょうでsheet1.xmlの文字もじコードを「UTF-8」に設定せっていします。なお、Open XMLでサポートされている文字もじコードは、「Unicode」(「UTF-8」または「UTF-16」)および「ISO/IEC 10646」です。

 sheet1.xmlファイルを生成せいせい、あらかじめ保存ほぞんしておいた[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮あっしゅくすると、1のようなExcelファイルが作成さくせいされます。

 ページでは、今回こんかい作成さくせいしたサンプルExcelファイル「sample.xlsx」のくだりデータについて、参照さんしょう追加ついか一部いちぶ更新こうしん削除さくじょおこなってみます。

       1|2 つぎのページへ

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアIDについて

メールマガジン登録とうろく

@ITのメールマガジンは、 もちろん、すべて無料むりょうです。ぜひメールマガジンをご購読こうどくください。