Я довольно подробно изучил это, но не нашел того, что искал.Вот два метода, которые я нашел:
1: использование Microsoft.Office.Interop.Excel, итерация по фигурам рабочей книги, затем копирование изображений в буфер обмена, а затем получение данных из буфера обмена и помещение их в растровое изображениеи, наконец, сохраните этот растр.Проблема с этим методом в буфере обмена.Мы бы хотели, чтобы это использовалось в многопоточной среде, и боимся проблем с буфером обмена между потоками.Мы бы не хотели иметь дело с блокировкой буфера обмена.
2: сохраните файл как файл .HTML, а затем извлеките изображения из папки «_files», созданной в том месте, в котором сохранен документ.Проблема заключается в том, что для каждого изображения создаются два изображения (1 с высоким разрешением, 1 с низким разрешением), и нет хорошего способа определить, какие изображения имеют низкое разрешение, а какие - с высоким разрешением, так как все они названыimage ### и некоторые файлы перечисляют их высокий, низкий, высокий, низкий, в то время как некоторые перечисляют их высокий, высокий, низкий, низкий.Использование всех этих файлов происходит медленно и занимает много места, что не идеально.Я мог бы проверить изображения по соотношению сторон, но это, очевидно, не очень хорошо, потому что несколько изображений могут иметь одинаковое соотношение сторон.
Есть ли способ для непосредственного анализа Excel.Shape как растрового изображения (или любого формата изображения)без использования буфера обмена?Кажется, что должен быть способ, потому что метод Shape.CopyPicture может отправить его в буфер обмена в формате изображения.Иначе, есть ли способ сделать что-то похожее на номер 2, не получая дубликатов?Я бы предпочел решение, которое не использует сторонние библиотеки.
Спасибо.