2010-04-12 5 views
9

Estamos intentando generar libros de trabajo de MS Excel utilizando OOXML y rellenar datos utilizando SSIS. somos capaces de generar libro y hojas, también es capaz de crear columnas e insertar datos en la celda de encabezado. También podemos completar datos usando SSIS.Use SSIS para rellenar el libro de Excel generado mediante OOXML

Pero la hoja (DocumentFormat.OpenXml.Spreadsheet.Sheet) y todas las celdas (DocumentFormat.OpenXml.Spreadsheet.Cell) pasa a ser OpenXmlUnknownElement. Así que no son capaces de leer la hoja/celular utilizando el código siguiente: Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == "Sheet1").SingleOrDefault<Sheet>();

somos capaces de leer el mismo archivo si se abra por primera vez el uso de MS Excel y guardar. ¿Alguien sabe cómo resolver esto?

+2

¿Puedes mostrar el código que tienes que crear y agregar las celdas? –

+0

¿Cerró el documento antes de intentar leerlo de nuevo? –

+0

¿hay un espacio de nombres involucrado? xmlns? – D3vtr0n

Respuesta

1

Probablemente se olvidó de dar a su hoja de un nombre. Puede ver esto usando

Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault 

y verá que su nombre de hoja no está definido o es un texto basura.

Si eso no ayuda. Cree un documento simple en código, guárdelo en OOXML y ábralo en un visor xml. luego haga una copia para abrirla en Excel y guárdela y vea la diferencia en xml. A menudo, es un buen comienzo para ver qué Excel ha agregado de forma predeterminada al documento.

Excel es muy tolerante con las cosas que ha hecho mal al crear el documento en código, y mágicamente las repara cuando abre el documento nuevamente.

Un truco malo sería usar la interoperabilidad para abrir el documento guardándolo de nuevo en el código. que arreglaría todo por ti.

Workbook wrkbk = app.Workbooks.Open(@"c:\del.xls"); 
    wrkbk.Save(); 
    wrkbk.Close(); 
Cuestiones relacionadas