Как сохранять изображения из Excel без использования буфера обмена на C #?

Я изучил это довольно подробно, но не нашел того, что искал. Я нашел два метода:

1: Используя Microsoft.Office.Interop.Excel, выполните итерацию по фигурам книги, затем скопируйте изображения в буфер обмена, затем возьмите данные из буфера обмена и поместите их в растровое изображение, а затем, наконец, сохраните это растровое изображение. Проблема с этим методом - буфер обмена. Мы хотим, чтобы это использовалось в многопоточной среде, и опасаемся проблем с буфером обмена между потоками. Мы бы предпочли не заниматься блокировкой буфера обмена.

2: Сохраните файл как файл .HTML, затем возьмите изображения из папки "_files", созданной, в которой сохраняется документ. Проблема заключается в том, что для каждого изображения создаются два изображения (1 с высоким разрешением, 1 с низким разрешением), и нет хорошего способа определить, какие изображения с низким разрешением, а какие с высоким разрешением, поскольку все они названы image ### и некоторые файлы перечисляют их высокий, низкий, высокий, низкий, а некоторые перечисляют их высокий, высокий, низкий, низкий. Все эти файлы используются медленно и занимают место, что не идеально. Я мог бы проверять изображения по соотношению сторон, но это явно не очень хорошо, потому что несколько изображений могут иметь одинаковое соотношение сторон.

Есть ли способ проанализировать Excel.Shape напрямую как растровое изображение (или любой формат изображения) без использования буфер обмена? Похоже, способ должен быть, потому что метод Shape.CopyPicture может отправить его в буфер обмена в формате изображения. В противном случае, есть ли способ сделать что-то похожее на номер 2 без дублирования? Я бы предпочел решение, в котором не используются сторонние библиотеки.

Спасибо.

9
задан k.schroeder31 26 July 2011 в 20:58
поделиться