Pregunta

En .NET C # Estoy intentando abrir una plantilla de Excel, agregar algunos datos y guardarla como un documento nuevo. Estoy tratando de usar el formato de documento OpenXML. Parece que no puedo encontrar una guía sobre cómo hacer esto. Parece que toda la documentación habla sobre cómo escribir varias partes en el Paquete, pero no puedo encontrar nada sobre qué hacer cuando haya terminado y quiera guardarlo.

¿Alguien sabe dónde puedo encontrar esta información? Debo estar pensando en esto incorrectamente porque no encuentro nada útil en lo que parece ser muy básico.

Gracias

¿Fue útil?

Solución

ExcelPackage funciona bastante bien para eso. El autor principal no ha trabajado en ello por poco tiempo, pero tiene un buen número de seguidores en su foro que resuelve cualquier problema.

            FileInfo template = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath)+"\\Template.xlsx");
        try
        {
            using (ExcelPackage xlPackage = new ExcelPackage(strFileName,template))
            {
                //Enable DEBUG mode to create the xl folder (equlivant to expanding a xlsx.zip file)
                //xlPackage.DebugMode = true;

                ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"];

                worksheet.Name = WorkSheetName;

                foreach (DataRow row in dt.Rows)
                {
                    int c = 1;
                    if (r > startRow) worksheet.InsertRow(r);
                    // our query has the columns in the right order, so simply
                    // iterate through the columns
                    foreach (DataColumn col in dt.Columns)
                    {
                        if (row[col].ToString() != null)
                        {
                            worksheet.Cell(r, c).Value = colValue;
                            worksheet.Column(c).Width = 10;
                        }
                        c++;
                    }
                    r++;
                }

                // change the sheet view to show it in page layout mode
                worksheet.View.PageLayoutView = false;

                // save our new workbook and we are done!
                xlPackage.Save();
                xlPackage.Dispose();
            }
        }

Otros consejos

El acceso a los documentos Open XML / SpreadsheetML está lejos de ser un ejercicio trivial. La especificación es grande y compleja. El " Open XML SDK " (google) definitivamente ayuda, pero aún requiere cierto conocimiento del estándar Open XML para hacer mucho.

SpreadsheetGear for .NET tiene una API similar a Excel y puede leer y escribir Excel Open XML (xlsx ) documentos, así como documentos de Excel 97-2003 (xls).

Puede ver algunos ejemplos de SpreadsheetGear aquí y descargar una prueba gratuita aquí .

Exención de responsabilidad: Soy propietario de SpreadsheetGear LLC

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top