2009-07-06 41 views
5

Como parte del programa C# que estoy produciendo, necesito generar 1 libro de trabajo que contenga; 2 hojas de trabajo diferentes y una tercera que se podría producir en cualquier cantidad de veces, ¿cuál es la forma más efectiva de hacerlo? He analizado el uso de plantillas, aunque no estoy seguro de cómo repetir ciertas hojas de trabajo, mientras que solo se muestran otras una vez. Cualquier ayuda o consejo sería apreciado.Usar plantillas en Excel con C#

+0

http://stackoverflow.com/questions/193092/c-how-to-add-excel-worksheet-programatically-office-xp-2003 – SwDevMan81

+0

Gracias por su respuesta, sé cómo agregar hojas de trabajo a un libro, mi dificultad estaba en agregar hojas de trabajo que ya tenían formato. Posiblemente una plantilla cuando una plantilla ya está siendo utilizada. –

Respuesta

1

Una forma simple es hacer un libro de ejercicios de ejemplo de la plantilla de manos libres con las tres hojas de trabajo. Luego haz una copia de eso. Abra ambos y vuelva a copiar la hoja de trabajo número 3 en el libro de trabajo como una nueva hoja de trabajo según sea necesario.

En respuesta al comentario:

Hay un par de motores de Excel en un componente .NET productos allí como nuestro engranaje de hoja de cálculo o células Aspose. Pero si su aplicación está basada en un formulario de Windows y la aplicación tiene la garantía de tener una oficina, puede usar la automatización de la oficina. No se puede usar legalmente la automatización de la oficina en un servidor web, pero es tan posible en un servidor web como en un escritorio de cliente. He usado las celdas Aspose y es muy fácil de trabajar y muy capaz y un poco menos costoso que una hoja de cálculo, pero las planchas de hoja de cálculo también tienen una buena reputación. Ambos componentes tienen muy buena documentación sobre cómo hacer cualquier cosa con Excel. Pero si tiene Excel y desea utilizar la automatización de oficinas, asegúrese de buscar, por ejemplo, un código en la web sobre cómo cerrar Excel correctamente desde C# o vb.net. Hay algunos trucos para lograr que se cierre correctamente.

+0

En primer lugar, gracias por la respuesta. Había pensado en eso aunque no estaba seguro si ese era el mejor método. ¿Conoces algún buen recurso para crear hojas de Excel con C#. Los recursos que he encontrado han sido bastante pobres. –

+0

vea mis ediciones arriba y también usando la automatización de oficina puede usar el http: // msdn.microsoft.com/en-us/library/aa272268(office.11).aspx como referencia de API. – gjutras

+0

+1: Así es como siempre lo hago. – RBarryYoung

0

tiene los métodos ISheet.CopyAfter/CopyBefore que le permiten copiar una hoja de trabajo completa dentro de un libro de trabajo o entre libros de trabajo.

Se puede ver un ejemplo de duplicación de una sola hoja varias veces en la Hoja de trabajo con la carta a hojas de cálculo con gráficos múltiples muestra en la página de ejemplos de SpreadsheetGear/Excel Reporting here.

exención de responsabilidad: Tengo SpreadsheetGear LLC

0

he hecho esto antes con plantillas. Crearía una plantilla xls con las dos primeras hojas de trabajo que no desea cambiar, luego agregue una tercera hoja de trabajo que podría copiar al final del libro (ya que necesita más hojas de trabajo).

Si sabe con anticipación cuántas hojas de la tercera hoja necesita, puede copiarlas hasta el final y eliminar la plantilla de la 3ª ranura.

 ExcelTemplateManager t = new ExcelTemplateManager(template_path, log_path); 
    t.CopyWorksheetToEnd(3); 
    t.CopyWorksheetToEnd(3); 
    t.RemoveAtIndexWorksheet(3); 
    t.SetSomeValue(3); 
    t.SetSomeValue(4); 
    t.Close(); 

Si usted no sabe, a continuación, mantener la plantilla en torno a copiarlo en el final según sea necesario, a continuación, cuando haya terminado, simplemente retire la plantilla tercera hoja.

 ExcelTemplateManager t = new ExcelTemplateManager(template_path, log_path); 
    t.CopyWorksheetToEnd(3); 
    t.SetSomeValue(4); 
    t.CopyWorksheetToEnd(3); 
    t.SetSomeValue(5); 
    t.RemoveAtIndexWorksheet(3); 
    t.Close(); 

que utiliza la DLL Microsoft.Office.Interop.Excel para crear mi clase ExcelTemplateManger. La idea básica es crear una copia del archivo Excel de plantilla y trabajar fuera de la copia. Avíseme si necesita ayuda para configurar esa parte, pero debería ser demasiado malo.

+0

me puedes mostrar cómo es tu administrador de plantillas. Necesito ver cómo está rellenando la plantilla – user236215

Cuestiones relacionadas