在Excel中使用模板

作为我生产的C#程序的一部分,我需要生成1个工作簿,其中包含; 2个不同的工作表和第三个可以生产任何次数的第三个,这样做的最有效的方法是什么? 我已经看过使用模板,但我不确定如何重复某些工作表,而只显示其他人一次。 任何帮助或build议,将不胜感激。

一个简单的方法是用三张工作表制作一个模板示例工作簿。 然后制作一个副本。 打开并重新复制工作表编号3到工作工作簿作为一个新的工作表根据需要。

回应评论:

.net组件产品中有一些excel引擎,如电子表格设备或aspose单元。 但是,如果你的应用程序是一个基于Windows窗体的应用程序保证运行的办公室,你可以使用办公自动化。 您不能合法地在Web服务器上使用办公自动化,但在Web服务器上和在客户端桌面上一样。 我已经使用了aspose单元,它的工作非常简单,function强大且比电子表格设备便宜,但是电子表格设备也具有良好的声誉。 这两个组件都有很好的关于如何使用excel做任何事情的文档。 但是,如果你有excel并想要使用办公自动化,请务必在网上查找示例代码,了解如何从c#或vb.net正确closuresexcel。 有一些技巧,让它正常closures。

用于.NET的SpreadsheetGear具有ISheet.CopyAfter / CopyBefore方法,使您可以在工作簿或工作簿之间复制整个工作表。

您可以在这里的SpreadsheetGear / Excel Reporting Samples页面上看到一个工作表中多次复制单个工作表的示例,其中包含Chart to Multiple Worksheets with Charts示例。

免责声明:我自己的SpreadsheetGear LLC

我之前用模板做过这个。 我将创build一个模板xls与您不想更改的前两个工作表,然后添加第三个工作表,您可以复制到工作簿的末尾(因为您需要更多的工作表)。

如果您事先知道需要第三张工作表的数量,则可以将它们复制到最后并删除第三个插槽。

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(); 

如果您不知道,那么保留模板以根据需要将其复制到最后,然后完成后,只需删除第三个工作表模板即可。

  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(); 

我使用Microsoft.Office.Interop.Excel DLL来创build我的ExcelTemplateManger类。 基本思想是创build模板excel文件的副本,并处理副本。 让我知道如果你需要帮助设置这个部分,但它应该是太糟糕了。