私はこれをかなり広く見てきましたが、私が探しているものはかなり見つかりませんでした。私が見つけた2つの方法は次のとおりですC#でクリップボードを使わずにExcelから画像を保存するには?
1:Microsoft.Office.Interop.Excelを使用して、ワークブックの図形を繰り返し、クリップボードにイメージをコピーしてから、クリップボードのデータを取り出してビットマップに入れてから最後にそのビットマップを保存します。このメソッドの問題はクリップボードです。これをマルチスレッド環境で使用し、スレッド間のクリップボードの問題を恐れています。私たちはむしろクリップボードロックを扱っていません。
2:ファイルを.HTMLファイルとして保存し、ドキュメントが保存された場所に作成された "_files"フォルダから画像を取得します。この問題は、画像ごとに2つの画像が作成されること(1つの高解像度、1つの低解像度)があり、どの画像が低解像度で、どの画像が高解像度であるかを判断する良い方法はありません画像###といくつかのファイルは高、低、高、低、それらの高、高、低、低のいくつかをリストしながら、それらをリストします。これらのファイルをすべて使用すると速度が遅くなり、スペースが必要になりますが、これは理想的ではありません。私はアスペクト比で画像を確認することができましたが、複数の画像が同じアスペクト比を持つ可能性があるため、これは明らかに大きくありません。
クリップボードを使用せずにExcel.Shapeを直接ビットマップ(または任意のイメージ形式)として解析する方法はありますか? Shape.CopyPictureメソッドは画像形式でクリップボードに送ることができるため、方法が必要であるようです。 それ以外の場合は、番号2に似た何かを重複しないで行う方法がありますか?私はサードパーティのライブラリを使用することを避けるソリューションを好むでしょう。
ありがとうございます。
迅速な対応をありがとう!残念ながら私の仕事は、古いファイルタイプについてもカバーすることです。私はほとんどの場合、.xlsxのチェックを特に追加して、これらのルートでこのルートを実行します。イメージの重複の大部分が削除されるためです。もう1つのわずかな問題は、このメソッドが画像の代わりに(メソッド2とは反対に)xmlとしてグラフを保存することです。 –
私はこのルートを使い、古いフォーマットをxlsxに変換してから続行します。もう一度ありがとう –
キッカーのトリック!! – ANinJa