Wie speichere ich Bilder in Excel, ohne die Zwischenablage in C # zu verwenden?

7

Ich habe das ziemlich ausführlich untersucht, aber ich habe nicht ganz das gefunden, wonach ich suche. Die zwei Methoden, die ich gefunden habe, sind

1: Verwenden Sie Microsoft.Office.Interop.Excel, durchlaufen Sie die Shapes der Arbeitsmappe, kopieren Sie dann die Bilder in die Zwischenablage und nehmen Sie dann die Daten aus der Zwischenablage in eine Bitmap und speichern Sie diese Bitmap abschließend. Das Problem mit dieser Methode ist die Zwischenablage. Wir möchten, dass dies in einer Multithread-Umgebung verwendet wird und haben Angst vor Zwischenablageproblemen zwischen Threads. Wir würden uns lieber nicht mit der Zwischenablage beschäftigen.

2: Speichern Sie die Datei als .HTML-Datei und greifen Sie dann auf die Bilder aus dem Ordner "_files", in dem das Dokument gespeichert wurde. Das Problem dabei ist, dass für jedes Bild zwei Bilder erzeugt werden (1 hohe Auflösung, 1 niedrige Auflösung), und es gibt keine gute Möglichkeit, zu bestimmen, welche Bilder niedrig und welche Bilder hochauflösend sind, da sie alle benannt sind image ### und einige Dateien listet sie hoch, niedrig, hoch, niedrig, während einige sie hoch, hoch, niedrig, niedrig auflisten. Die Verwendung all dieser Dateien ist langsam und belegt Platz, was nicht ideal ist. Ich könnte Bilder nach Seitenverhältnissen überprüfen, aber das ist offensichtlich nicht gut, weil mehrere Bilder dasselbe Seitenverhältnis haben könnten.

Gibt es eine Möglichkeit, die Excel.Shape direkt als Bitmap (oder ein beliebiges Bildformat) zu analysieren, ohne die Zwischenablage zu verwenden? Es scheint, dass es einen Weg geben muss, da die Shape.CopyPicture-Methode es in einem Bildformat an die Zwischenablage senden kann. Gibt es sonst eine Möglichkeit, etwas Ähnliches wie Nummer 2 zu tun, ohne Duplikate zu bekommen? Ich würde eine Lösung bevorzugen, die die Verwendung von Bibliotheken von Drittanbietern vermeidet.

Danke.

    
k.schroeder31 26.07.2011, 20:58
quelle

1 Antwort

25

Ich nehme an, dass Sie das Format Excel 2007/2010 verwenden. Jede Excel 2007/2010 Datei ist eine Zip-Datei! Benennen Sie einfach Ihre Datei Excel.xlsx in Excel.zip um. Entpacken Sie dann die Datei in einen Ordner. Die Bilder befinden sich im Ordner '/ xl / media'.

Versuchen Sie es manuell. Wenn Sie dies wissen, ist es einfach, dies zu automatisieren, indem Sie ein C # -Programm dafür schreiben.

    
C.Zonnenberg 26.07.2011, 21:06
quelle

Tags und Links