Xlsxの[プロパティ]→[詳細]情報を書き換える方法を調べております。
下記のHPを参考にし、Xlsなら書き換えが行えるようになりました。
http://mrxray.on.coocan.jp/Delphi/plSamples/816_FilePropety.htm
しかしながら同様の処理をXlsxファイルで行なっても、書き換える事ができません。
お手数ですが、何か情報をお持ちの方が居られましたら教えて頂けないでしょうか。
以上、よろしくお願いいたします。
xlsx は zip 圧縮された xml データなので、
・解凍して、
・タグを Parse し、
・情報を書き換え、
・再圧縮する。
という手順で処理することになると思います。
※Open XML SDK2.5 Productivity Tool for Microsoft Office を入手し、
実際の xlsx ファイル構造をご覧になることをお勧めします。
解凍してみるのが一番。。。かな?
※そのままで無理なら、拡張子を xlsx --> zip に変更すれば、読み取り
パスワード付じゃなければ、解凍可能できますよん。
返信ありがとうございます。
Xlsx = Zipというのは知っているのですが、[プロパティ]→[詳細]情報を書き換える方法は中身を直接書き換えるしか方法が無いという事なのでしょうか?
Excel が入ってない環境、あるいは、サーバー上での動作も想定して
いるのなら、その場合は COM Object を利用するのはダメですから、
・色々出ている有償コンポーネント等を利用する。あるいは、
・自前でゴリゴリ、解凍→修正→圧縮する。
くらいじゃないんでしょうかねぇ。
そうじゃなければ、COM Object 使うか…。
ググれば色々と出てくると思うんですけどねぇ?
結局は"すぐに利用できるコードを提示しろよ!"ということ?
だったら、以後の回答はパスします。(^_^;)
返信ありがとうございます。
>すぐに利用できるコードを提示しろよ
上記のような気持ちはありません。
ただXlsxファイルに関してはXlsと同様な方法が適用できないのか?という事が知りたいのです。
取りあえず同様な方法は出来ないようなので、解凍→修正→圧縮を試みる事とします。
ありがとうございました。
こんにちは.
[816_ファイルのプロパティ]
http://mrxray.on.coocan.jp/Delphi/plSamples/816_FilePropety.htm#top
には,エクセルに限って言えば,
DSOFile オブジェクトをする方法
TShwll オブジェクトを使用する方法
構造化ストレージを使用する方法
エクセルのオブジェクトを使用する方法
のサンプルがあります.
TK さんの環境では (書いてないので分かりませんが),いずれの方法でも,
書き換える事ができまないということらしいので,
XML の中を直接操作する方法しかないと思います.
ちなみに,私の環境では,エクセルのオブジェクトを使用して,Xlsx 形式のファイルの
プロパティの取得,書き換えも可能でした.
なお,参照リンクのページは,更新していますが,Xlsx のファイルのプロパティの
操作が可能なように更新したわけではありません.
Mr.XRAYさん、お返事ありがとうございます。
環境はOSを入れただけの環境にDelphiで作成したexeを入れ、そこからXlsxファイルを操作する事を試みておりました。
最終的に、解凍→修正→圧縮で思い通りの事が出来たことを確認いたしました。
色々教えて頂きありがとうございました。
ツイート | ![]() |