| ■103768 / ) |
Re[7]: OpenXML 図形 |
□投稿者/ 魔界の仮面弁士 (3860回)-(2025/07/11(Fri) 11:42:14)
|
■No103767 (とくま さん) に返信 > ClosedXML は OpenXML をベースにしているから参考になる場合はある OpenXML では SpreadsheetDocument を起点にしますが ClosedXML では XLWorkbook を起点とするのが最大の違いですね。 (ClosedXML の XLWorkbook も、内部的で SpreadsheetDocument を呼び出しています)
> そして一般に言われる Excelライブラリ(Office Automation ライブラリ、COM API、Microsoft Excel N.N タイプ ライブラリ) > は使ってない。
そうですね。COM 版の Excel ライブラリは使っていません。
No103755 で am さんが SaveAs(String) メソッド案を出してくださいましたが、 このメソッドは OpenXml 3.3.0 の DocumentFormat.OpenXml.Packaging.SpreadsheetDocument クラスには 存在していません。この方法で No103746 の課題を解決できるのかは、当方未検証です。
SaveAs メソッドは OpenXML 2.x に存在していた "インスタンス メソッド" ですが、 3.0.0 以降では存在していません。
2.19.0 までは使用可能でしたが 2.20.0 にて非推奨(Obsolete)に変更されたという経緯があります。 ※ No103765 で初回した URL の末尾の「適用対象」の「バージョン (廃止)」情報を参照
su さんがお使いのバージョンはどれなのでしょうか?
一方、 Clone() As SpreadsheetDocument Clone(Stream) As SpreadsheetDocument Clone(String) As SpreadsheetDocument などのメソッドは 3.x 系でも使用できるようです。これらは "拡張メソッド" です。
> 大抵、引数のオーバーロードでストリームにも対応している。 SpreadsheetDocument.Open(String, Boolean) のオーバーロードの代わりに SpreadsheetDocument.Open(Stream, Boolean) のオーバーロードを呼び出してみてください。
Open メソッドだけでなく、Create メソッドや Clone メソッドも ファイルパス(String) を引数に受け取るオーバーロードと ストリーム(Stream) を引数に受け取るオーバーロードを持っています。
もし、FileStream を使ってもファイルがロックされてしまうようであれば、 MemoryStream を使うようにすれば、ファイルがロックされることを防げるのではないでしょうか。 編集後に、MemoryStream の中身のバイナリをファイルに書き出す処理は必要ですが。
|
|