2010-04-12 16 views
9

Staramy się wygenerować skoroszyt MS Excel używając OOXML i zapełnić dane przy użyciu SSIS. Jesteśmy w stanie generować skoroszyt i arkusze, a także tworzyć kolumny i wstawiać dane do komórki nagłówka. Możemy również zapełniać dane za pomocą SSIS.Użyj SSIS do wypełnienia skoroszytu programu Excel wygenerowanego przy użyciu OOXML

Ale arkusz (DocumentFormat.OpenXml.Spreadsheet.Sheet) i wszystkie komórki (DocumentFormat.OpenXml.Spreadsheet.Cell) stają się OpenXmlUnknownElement. Dlatego nie możemy odczytać arkusza/komórki za pomocą następującego kodu: Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == "Sheet1").SingleOrDefault<Sheet>();

Jesteśmy w stanie odczytać ten sam plik, jeśli najpierw go otworzymy przy pomocy MS Excel i zapiszemy. Czy ktoś wie, jak rozwiązać ten problem?

+2

Czy możesz pokazać kod, który musisz utworzyć i dodać komórki? –

+0

Czy zamknąłeś dokument przed ponowną próbą jego przeczytania? –

+0

Czy istnieje przestrzeń nazw? xmlns? – D3vtr0n

Odpowiedz

1

Prawdopodobnie zapomniałeś nadać swojej karcie imię. Możesz to zobaczyć, korzystając z , a zobaczysz, że twoja nazwa arkusza jest niezdefiniowana lub tekst na śmieci.

Jeśli to nie pomoże. Utwórz prosty dokument w kodzie, zapisz go w OOXML i otwórz w przeglądarce xml. następnie wykonaj kopię, otwórz ją w Excelu i zapisz i zobacz różnicę w xml. Często jest to dobry początek, aby zobaczyć, co program Excel dodał domyślnie do dokumentu.

Program Excel jest bardzo odporny na rzeczy, które zrobiłeś źle podczas tworzenia dokumentu w kodzie, i magicznie naprawia je podczas ponownego otwierania dokumentu.

Złym hackiem byłoby użycie współdziałania, aby otworzyć dokument, zapisując go ponownie w kodzie. które naprawiłoby wszystko dla ciebie.

Workbook wrkbk = app.Workbooks.Open(@"c:\del.xls"); 
    wrkbk.Save(); 
    wrkbk.Close(); 
Powiązane problemy