OfficeOpenXML形式のエクセルファイルを読めないのかなとおもいためしてみました。
でも、今はまだ、単純にCellの内容(値)を取得できるレベルです。
(当たり前ですが、100% ActionScriptです。AIRライブラリを含む・・・)

OfficeOpenXML形式とは、Excel2007 などからサポートされた形式で拡張子がxlsxになっています。Excel2003などでも、変換ツールがMicrosoftから公開されていて、これらの拡張子のファイルを開こうとすると、ツールをダウンロードしようとしますので、xlsxのファイルも広く使えるようになっているのではないでしょうか。

実体はいろいろなxmlをzipで圧縮した形式なのでxlsよりもファイルサイズが小さいです。

そして、以前作成したAirでZIP解凍するライブラリとあわせれば、後は通常のXMLの解析なので、OfficeOpenXML形式の仕様とにらめっこすればいいわけです。
(OfficeOpenXMLの仕様はhttp://www.ecma-international.org/publications/standards/Ecma-376.htmからみることができます。)

それに、ZIP解凍するライブラリを作ったのも、半分くらいはこのオフィスファイルを制御するためにつくったのですが・・・

下記例で使うクラスは・・・
[as]
import com.coltware.oox.SpreadsheetML;
import com.coltware.oox.excel.SMLCell;
import com.coltware.oox.excel.SMLRow;
import com.coltware.oox.excel.SMLWorkbook;
import com.coltware.oox.excel.SMLWorksheet;
[/as]
です。

まず、エクセルファイルのオープンの方法とワークブックの取得は
[as]
var file:File = new File(…..); // ここでxlsxファイルを指定
var excel:SpreadsheetML = new SpreadsheetML();
excel.openFile(file);
var workbook:SMLWorkbook = excel.getWorkbook();
excel.closeFile();
[/as]
ここで、closeFile()としていますが、これは将来、変更もできるようにするためで、いろいろと作業中に作ったゴミの削除をしています。

次に、シートの取得とロードは
[as]
var sheet:SMLWorksheet = workbook.getSheetAt(0);
sheet.load();
trace(sheet.name); // シートの名前がとれます。
[/as]

このシート(実際はデータ)はファイルが大きい可能性があるので、最初のopenFileでは読み込んでいません。
使うときに、loadをしてから使うようにします。
後で、ここで非同期loadを作る予定です。

次にシートからRowとCellの取得方法です。
Rowとは縦の1から・・・・で、Cellとは、”A1″とか、”B5″などのように指定するあれです。

Rowの取得
[as]
var row:SMLRow = sheet.getRow(119);
if(row){
var cellList:Array = row.getCellList();
for each(var _cell:SMLCell in cellList){
trace(_cell.getCellId() + “->” + _cell.getStringValue());
}
}
[/as]

SheetにあるすべてのRowをとる
[as]
var rowList:Array = sheet.getRowList();
for each(row in rowList){
if(row){
var cellList:Array = row.getCellList();
for each(var cell:SMLCell in cellList){
trace(cell.getCellId() + “=>” + cell.getStringValue());
}
}
}
[/as]

Sheetから直接Cellもとれます
[as]
var cell:SMLCell = sheet.getCell(“B3”);
if(cell){
// まだ、文字列としてしか値をとれません。
trace(cell.getStringValue());
}
[/as]

このレベルですが、もし試してみたい方はこちらからswcのダウンロードをどうぞ。
ダウンロード

実は、書き換えもすでにあるsheetのデータでしたら、管理情報も増えないので簡単なのですが、sheetの追加とかになるとちょっとめんどうなのでそれはまだできていません。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2009年12月
« 11月   1月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ