人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

既存のxlsファイルを読み込み、特定の箇所にデータを差込みして出力させたいため、
MS-Excelのxlsファイルの内部フォーマットを解説しているサイトを探しています。
(OLEは使えないので、自力で解析してparseしようと思っています)
MSのサイトも探してみたのですが、PDFのフォーマットのようには公開されていないのでしょうか?

●質問者: onten
●カテゴリ:コンピュータ
✍キーワード:Excel MS PDF xls サイト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● dasm
●30ポイント

http://sc.openoffice.org/excelfileformat.pdf

218 ページもあって読むのはしんどそうですが、探せばあるようですよ。

BIFF7 などのキーワードも混ぜると探しやすいと思います。

◎質問者からの返答

なるほど、OpenOfficeですか。

しかし、OpenOfficeのExcelファイルはMSのものと微妙に互換性がないのが不安です。


2 ● zizz_walla
●30ポイント

http://jakarta.terra-intl.com/poi/

Javaを使うことができるなら、XLSファイルを操作することができます。

XLSファイルのフォーマットは OLE 2 複合ドキュメント形式になっていて構造が複雑ですので、OLEを使わずにアクセスすることは困難です。

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

Jakarta POIを用いたExcelファイルの入出力 〜POI HSSFを用いたExcel簡単入出力〜

POIのサンプルです。

◎質問者からの返答

POIの存在は知っていたのですが、これって本当に既存のXLSファイルにデータを差し込んで、そのまま出力できるんでしょうか?

PerlとPHPでは「読むだけ」や「書き出すだけ」のモジュールは存在するのですが、両方を兼ね備えたものがなかったもので。。。

JavaはPHP関数でcallできるので、POIで実現できるのであれば、非常に魅力的ではあります。


3 ● shampoohat
●40ポイント

http://www.google.co.jp/

Google

URLダミーです。

文書の変な装飾などにより、たまにパースに失敗してPOI HSSFが例外出したり、読み込みは、改善が可能そうですが、差し込みなら安定して使えそうですね。プログラミングも楽ですし(開いて書き換え閉じるたけ。数十ステップ)。

◎質問者からの返答

なるほど!

こちらで対応させていただきたいと思います。

ありがとうございました。


4 ● stealthinu
●20ポイント

http://discypus.jp/pc/linux/parseexcel.shtml

perlに、OLE使わなくてもXLSデータを扱える、SpreadSheet::ParseExcelとWriteExcelモジュールがあります。

これを使うのが簡単ではないでしょうか。

http://www.drk7.jp/MT/archives/000565.html

Spreadsheet::WriteExcel = Perl で Excel 出力 :: Drk7jp

こちらにも同モジュールを使った例が出ています。

◎質問者からの返答

私が調査した限りでは、ParseExcelはセルデータの読み込みだけをサポートし、チャートや罫線などのフォーマットは再現できず、読み込んだイメージ自体をWriteExcelモジュールで出力ができないため、差込ということは出来なかった気がしますが。。。


5 ● stealthinu
●0ポイント

http://search.cpan.org/~kwitknr/Spreadsheet-ParseExcel-0.260...

Spreadsheet::ParseExcel::SaveParser - Expand of Spreadsheet::ParseExcel with Spreadsheet::WriteExcel - search.cpan.org

先にParseExcelを紹介したものですので、ポイントは結構です。

確かに、ParseExcelでパースさせてWriteExcelで書くのでは、他の罫線やらチャートやらはダメそうですね。

それでCPAN捜してみたら、

Spreadsheet::ParseExcel::SaveParser

というのがあって、「Write an Excel file with previous data」とのことで、AddCellとかいうインターフェイスもあるんで、これでなんとかならないかなあ、と。

試していないので、単にParseしてWriteするのを簡単にしただけかもしれません。その場合は先の問題は解決されないと思うので、ダメだと思います。

参考までに。

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ