Verwenden Sie SSIS, um Excel-Arbeitsmappen zu füllen, die mit OOXML generiert wurden

9

Wir versuchen, MS Excel-Arbeitsmappe mit OOXML zu generieren und Daten mit SSIS zu füllen. Wir sind in der Lage, Arbeitsmappe und Arbeitsblätter zu erstellen, und können auch Spalten erstellen und Daten in die Kopfzeile einfügen. Wir können Daten auch mit SSIS füllen.

Aber das Blatt ( DocumentFormat.OpenXml.Spreadsheet.Sheet ) und alle Zellen ( DocumentFormat.OpenXml.Spreadsheet.Cell ) werden OpenXmlUnknownElement . Daher können wir das Blatt / die Zelle nicht mit dem folgenden Code lesen: Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == "Sheet1").SingleOrDefault<Sheet>();

Wir können dieselbe Datei lesen, wenn wir sie zuerst mit MS Excel öffnen und speichern. Weiß jemand, wie man das löst?

    
Maulik 12.04.2010, 03:25
quelle

1 Antwort

1

Sie haben wahrscheinlich vergessen, Ihrem Blatt einen Namen zu geben. Sie können dies sehen, indem Sie

verwenden %Vor%

und Sie werden feststellen, dass der Name Ihres Arbeitsblatts entweder nicht definiert ist oder einen ungültigen Text enthält.

Wenn das nicht hilft. Erstellen Sie ein einfaches Dokument in Code, speichern Sie es in OOXML und öffnen Sie es in einem XML-Viewer. dann erstellen Sie eine Kopie öffnen Sie es in Excel und speichern Sie es und sehen Sie den Unterschied in XML. Das ist oft ein guter Anfang, wenn man sieht, was Excel dem Dokument standardmäßig hinzugefügt hat.

Excel ist sehr tolerant gegenüber Dingen, die Sie falsch gemacht haben, als Sie das Dokument im Code erstellt haben, und repariert sie beim erneuten Öffnen des Dokuments auf magische Weise.

Ein schlechter Hack würde Interop verwenden, um das Dokument zu öffnen und es im Code wieder zu speichern. was alles für dich reparieren würde.

%Vor%     
Archlight 12.12.2012 10:23
quelle