Open XML SDK - Speichern Sie eine Vorlage-Datei (.xltx zu .xlsx)
Ich habe den folgenden code zum öffnen der Excel-Vorlage-Datei und speichern Sie es als .xlsx-Datei und ich bekomme den folgenden Fehler, wenn ich versuche, öffnen Sie die neue Datei. Bitte helfen Sie, diese zu lösen.
Excel kann die Datei nicht öffnen 'sa123.xlsx' da das Dateiformat oder die Dateierweiterung ungültig ist. Stellen Sie sicher, dass die Datei nicht beschädigt wurde und dass die Dateiendung entspricht dem format der Datei.
string templateName = "C:\\temp\\sa123.xltx";
byte[] docAsArray = File.ReadAllBytes(templateName);
using (MemoryStream stream = new MemoryStream())
{
stream.Write(docAsArray, 0, docAsArray.Length); //THIS performs doc copy
File.WriteAllBytes("C:\\temp\\sa123.xlsx", stream.ToArray());
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um dies zu tun, müssen Sie die Open XML SDK 2.0. Unten ist ein code-snippet, das für mich gearbeitet, wenn ich es versuchte:
Was dieser code tut, ist es nimmt die Vorlage-Datei und öffnet Sie in einem
SpreadsheetDocument
Objekt. Der Typ dieses Objekt istTemplate
, aber da Sie es wollen, so eineWorkbook
rufen Sie dieChangeDocumentType
Methode ändern Sie es von einemTemplate
zu einemWorkbook
. Dies funktioniert, da die zugrunde liegenden XML-Code ist das gleiche, zwischen .xltx und .xlsx-Datei-und sei es nur das geben, was Sie ein Problem.Excel sieht die .xlsx-Erweiterung und versucht, ihn zu öffnen wie eine Arbeitsblatt-Datei. Ist es aber nicht. Es ist eine Vorlage-Datei. Wenn Sie eine Vorlage in Excel öffnen und speichern Sie es als .xlsx-Datei, wandelt es in das Arbeitsblatt formatieren. Was Sie tun ist das gleiche wie das ändern der Endung im Dateinamen. Versuchen Sie es im Windows-Explorer, und Sie erhalten das gleiche Ergebnis.
Ich glaube, Sie sollten in der Lage sein zu erreichen, was Sie wollen, indem Sie die Excel-Objekt-Modell. Ich habe nicht verwendet, obwohl dies.