Guten Tag,
Ich habe momentan das Problem, dass ich in C# eine .docx-File generieren lassen möchte.
Dazu habe ich eine leere Word-Datei gespeichert und entzippt und lasse jetzt mein C#-Programm genause diese Struktur 1:1 nachbauen, was auch alles soweit wunderbar klappt.
Nehme ich nun manuell meine Ordner-Struktur und füge diese in einen von von mir auch manuell erzeugten "Zip-Komprimierten Ordner" von Windows ein und ändere die Dateiendung zu ".docx" lässt sich die Datei problemlos von Word öffnen und auslesen.
Wenn ich nun aber die Ordnerstruktur mit folgendem Code zippe, ist dies nichtmehr möglich, und Word zeigt mir ein leeres Dokument:
private bool zipFile(string pStrFileName)
{
try
{
ZipFile.CreateFromDirectory(Application.StartupPath + "\\" + pStrFileName,
Application.StartupPath + "\\" + pStrFileName + ".zip",
CompressionLevel.Optimal,
false, Encoding.UTF8);
return true;
}
catch (Exception)
{
MessageBox.Show("Error occured while zipping folder " + pStrFileName, "ERROR");
return false;
}
}
Ich habe auch schon alle CompressionLevel durchgetestet, es macht keinen unterschied.
Jemand zufällig ne Idee, wie ich die Ordnerstruktur automatisiert zippen kann, sodass ich die Datei danach mit Word lesen kann?^^
MfG
Asta
Hallo Astalav,
gibt es einen Grund, warum du das so umständlich machst und nicht die OpenXmlSdk verwendest um docx zu erstellen?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hi Coffeebean,
zum einen ist der Grund, dass ich ich von der OpenXmlSdk erst erfahren habe bzw. diese Möglichkeit erst entdeckt habe, als ich bei Google nach meinem zipping-Problem gesucht habe und mich nun doch der Anreitz, dass das Programm einzig am zippen scheitert doch noch auf diesem Pfad wandeln lässt.
Außerdem wäre noch der Grund, das ich hier leider an einem Rechner sitze, an dem ich die SDK nicht problemlos downloaden könnte.
MfG
Asta
Naja; was Du halt machst ist nicht im Sinne des Erfinders.
Du wirst vermutlich die Content- oder Head-Informationen zerstören und damit ist das docx unbrauchbar.
Du solltest also wirklich das OpenSDK verwenden; dazu ist es da.
Es gibt mittlerweile USB-Sticks, auf denen man Daten auf PC1 speichern und auf PC2 übertragen kann. Damit lassen sich selbst SDKs installieren, die sonst nur übers Internet abrufbar sind.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code