一个简单的方法是创建一个包含三个工作表的模板示例工作簿,然后复制它。打开两个工作簿并根据需要将第三个工作表重新复制到工作簿中作为新工作表。
回应评论:
有一些基于 .net 组件产品的 Excel 引擎,例如 Spreadsheet Gear 或 Aspose Cells。但如果您的应用程序是基于 Windows 窗体的,并且保证运行的地方有 Office,您可以使用 Office 自动化。您不能在 Web 服务器上合法使用 Office 自动化,但在客户端桌面上和 Web 服务器上同样可能。我使用过 Aspose Cells,它非常易于使用、功能强大,比 Spreadsheet Gear 稍微便宜一些,但 Spreadsheet Gear 也有很好的声誉。这两个组件都有非常好的文档,说明如何在 Excel 中进行任何操作。但如果您有 Excel 并想使用 Office 自动化,请务必在网上查找示例代码,了解如何从 C# 或 VB.NET 正确关闭 Excel。有一些技巧可以让它正确关闭。
我以前用模板做过这个。我会创建一个带有前两个工作表的模板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来创建我的ExcelTemplateManger类。基本思路是创建模板Excel文件的副本,并在副本上进行操作。如果您需要帮助设置该部分,请告诉我,但应该不会太麻烦。
.NET的SpreadsheetGear具有ISheet.CopyAfter / CopyBefore方法,可让您在工作簿内或工作簿之间复制整个工作表。
您可以在SpreadsheetGear / Excel Reporting Samples页面的带图表的工作表复制到多个带图表的工作表示例中查看多次复制单个工作表的示例这里。
免责声明:我拥有SpreadsheetGear LLC