- PR -

Excelファイルのコピー・編集について

投稿者投稿内容
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2004-11-11 12:01
現在、既存Excelファイルをコピー・編集しクライアント側でダウンロードできるような
システムを構築しています。
Excelの操作には"Jakarta POI"を使用しています。

現在、マクロが含まれているファイルを編集するとうまく?(エラーが発生し開けない)
コピーできません。
マクロが含まれていないファイルについては、問題なくコピー・編集出来ます。
どなたか同様な処理を実装された方、対処方法をご教授ください。
セキュリティー上できないのでしょうか?
(ドキュメントは英語で記述されていたので理解できてません)

特に"Jakarta POI"にこだわっているわけではありません。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-11-11 12:33
サーバがwindowsであれば、サーバにofficeをインストールし、
WSHでエクセルファイルを作成するという手段もあります。
むしろ、この方法の方が楽に作成できますよ。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2004-11-11 12:46
かつのりさん、ありがとうございます。

全くWSHは理解していませんが、Java側からスクリプトファイルを呼び出すことが
出来るのでしょうか?また、ファイル編集方法はどのようなものになるのでしょうか?
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-11-11 13:18
引用:

Java側からスクリプトファイルを呼び出すことが出来るのでしょうか?


WSHで完結する定型処理で良いのなら WSH スクリプトファイルを用意して、Runtime#exec() で cscript.exe を呼べばいいんじゃないかな。

Java から Jakarta POI のように Excel ファイルをいじり倒したいなら、Java で OLE 連携しないといけないですね。私は以前、JCOMを使用して、Java から Excel ファイルの編集を行ったことがあります。Java で OLE を使用するためのライブラリは他にもたくさんありますが、JCOM は Excel 用の簡易ラッパーも用意しているので Excel 向きと言えます。

…と説明しておいてなんですが。OLE での Excel 編集は、マルチスレッド/マルチプロセスでの使用でいろいろと問題が発生することが多いです。複数クライアントからの接続可能性があるサーバーサイド処理であれば、やはり POI でなんとかするのが良いと思います。パフォーマンスも桁違いに良いですし。

私もいま、JCOM で Excel 編集するソフトウェアを POI で作り直すべくアレコレ調べているところです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-11-11 13:24
WSHの起動はjava.lang.Runtimeで起動できますよ。

ファイルの編集方法は、ExcelVBAとほぼ同じになりますので、
その手のサイトを参考にしてはいかがでしょうか。
VBScriptを使用するのがいいと思います。
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2004-11-11 13:43
未記入さん、かつのりさん、ありがとうございます。
かつのりさん>
やはりWSHについては勉強が必要なのでその後試してみます。

未記入さん>もうすこしPOIを使用し、進めていきます。
先程と変わらずマクロを含んだシートの編集・コピーが出来ないんです・・
調べてみます。

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-11-11 16:02
POI 1.5 ではマクロ込みはダメ
http://jakarta.terra-intl.com/poi/hssf/limitations.html
で、POI 2.0 では、そのまま書き出せる
http://jakarta.apache.org/poi/hssf/limitations.html
となっていますが、2.0 でもダメなのですか?
http://cvs.apache.org/viewcvs.cgi/jakarta-poi/src/examples/src/org/apache/poi/hssf/usermodel/examples/ReadWriteWorkbook.java?rev=1.6&view=markup
の EXAMPLE は マクロを破壊しますか?
====================================================
白紙のBook に大きいマクロを貼り付けても [WARNING] Unknown Ptg ffffffb0 (-80)
は起きない。
しかし、多世代にわたって編集をかけたシートを貼り付ける(他から)
と 即実行エラーになります。ボタン・計算式・入力規則・データフィルタ
も特に障害にはならないようだが、
セルの移動や行の追加・ソートなど
畳み込みなど、「修正が積み重なったシート」は
入力のパースでエラーになる。

修正に修正を重ねたシートはセルを削除して白紙にしても、
シート移動またはコピーで貼り付けると、エラーになる。


[ メッセージ編集済み 編集者: MMX 編集日時 2004-11-12 18:15 ]
Dra
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 111
投稿日時: 2004-11-11 17:57
MMXさん、ありがとうございます。
バージョンは2.5で最新です。
さきほど試した結果、マクロを含んでいると処理できないわけでなく
ファイルサイズ(マクロ込み)が340KB程度だと正常にコピー出来ていないらしく
開くことができません。
20KB程度のファイルにおいては問題なく処理/編集が可能です。

コピーサイズに制限が・・あるいはマクロが関係しているのでしょうか?
宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)