Konvertieren von XLS nach XLSX


#1
Hallo,

wie der Themenname schon sagt geht es hier um die Konvertierung von XLS Dateien nach XLSX Dateien.

Eigentlich habe ich alles so gemacht wie in verschiedenen Foren beschrieben ist.
1. Die DLL Spire.XLS von NuGet heruntergeladen.
2. In meinem Projekt auf die DLL Spire.XLS einen Verweis angelegt.
3. In meinem Projekt ein Modul angelegt und das "using directive" "using Spire.Xls;" eingefügt.
4. Eine Klasse und Funktion angelegt in der ich die Instanz "wb" von "Workbook" eröffne.
C#:
public int ConvertXls2Xlsx(string strSource, string strTarget)
        {
            int iResult = 0;

            try
            {
                Workbook wb = new Workbook();

                wb.LoadFromFile(strSource);
                wb.SaveToFile(strTarget, ExcelVersion.Version2013);
            }
            catch (Exception e)
            {
                Console.WriteLine("Absturz bei der Konvertierung");
                Console.WriteLine(e.InnerException);
            }
            finally
            {
                Environment.Exit(0);
            }

            return iResult;
        }
Doch leider kommt es an dieser Stelle (Workbook wb = new Workbook()) zum Absturz und mein Debugger landet im "catch".

Fehlt mir noch irgendwas zu meinem Glück.

Vielen Dank.
MfG.
CopWorker
 

Spyke

Premium-User
#2
Kenne die verwendeten DLLs nicht aber wenn du verräts was für eine Exception/Fehlermeldung auftritt könnt man eventuell weiterhelfen.
 
#3
Hallo Spyke,

die DLL habe ich über den NuGet-Paket-Manger einmal einrichten lassen.
Dies ist über Projekt | NuGet Pakete verwalten möglich.
Dann funktioniert es. Da läuft irgendwas im Hintergrund was ich nicht erklären kann.
Hauptsache es geht jetzt.
Aber trotzdem vielen Dank für deine Hilfe.

MfG.
CopWorker
 
#4
Hallo zusammen,

ich weiß nicht ob ich hier richtig bin.
Jetzt geht´s nämlich weiter mit den Problemen.
Es handelt sich um eine Excel Datei die manuell unter C++ erzeugt wird.
Wenn ich diese vorhandene Excel Datei mit dem Format "Excel 97 bis 2003" (*.xls) in eine "Excel 2007" (*xlsx) konvertieren möchte stürzt das Programm an der Stelle wo die Datei eingelesen wird schon ab.
C#:
wb.LoadFromFile(strSource);
Die Meldung vom Exception Handler lautet:
"Zip exception.Can't locate end of central directory record. Possible wrong file format or archive is corrupt."

Liest man diese Datei mit Excel ein und speichert diese dann wieder unter dem gleichen Namen und unter dem selben Format ab dann lässt sich diese von meinem Programm wieder einlesen.

Vielen Dank für eure Hilfe
MfG.
CopWorker
 

Spyke

Premium-User
#5
Kannst du beim Workbook irgendwo ein Flush oder ähnliches aufrufen?
Scheint mir als wenn die Datei nicht richtig abgeschlossen gespeichert wurde.
Eventuell das Workbookm auch Disposen.

Was mir auffällt
Environment.Exit(0);
ist ein harter Exit der quasi den prozess sofort beendet und entsprechende Sachen nicht mehr richtig ausgeführt werden (oder garnicht), eventuell wird dadurch die Datei auch nicht richtig geschlossen/zuende geschrieben/freigegeben.