需要使用C#将部分工作簿的工作表合并为一个新的工作簿

问题描述 投票:0回答:2

我的项目是从不同的工作簿(Excel 文件)中获取四个工作表并将它们添加到一个全新的工作簿中。我正在使用此逻辑将 Excel 工作表放入工作表对象并将其添加到新工作表中:

var App = new Microsoft.Office.Interop.Excel.Application();

Workbook  book1 = App.Workbooks.Open(@"path");
Worksheet sheet1 = book1.Worksheets\[1\];

Workbook  book2 = App.Workbooks.Open(@"path");
Worksheet sheet2 = book2.Worksheets\[1\];

Workbook  book3 = App.Workbooks.Open(@"path");
Worksheet sheet3 = book3.Worksheets\[1\];

现在如何创建一个新工作簿并将 sheet1、sheet2 和 sheet3 添加到该工作簿?

c# excel export-to-excel microsoft.office.interop.excel
2个回答
0
投票

你可以试试这样的东西

var newBook = App.Workbooks.Add();
sheet1.UsedRange.Copy(newBook.Worksheets[1].Range["A1"]);
sheet2.UsedRange.Copy(newBook.Worksheets[2].Range["A1"]);
sheet3.UsedRange.Copy(newBook.Worksheets[3].Range["A1"]);
newBook.SaveAs(@"path\newWorkbook.xlsx");
newBook.Close();
App.Quit();

0
投票

以上解决方案仅适用于一张纸,如果您想要更多纸,那么这是我迄今为止得到的最简单的解决方案

var App = new Microsoft.Office.Interop.Excel.Application();

Workbook  book1 = App.Workbooks.Open(@"path");
Worksheet sheet1 = book1.Worksheets\[1\];

Workbook  book2 = App.Workbooks.Open(@"path");
Worksheet sheet2 = book2.Worksheets\[1\];

Workbook  book3 = App.Workbooks.Open(@"path");
Worksheet sheet3 = book3.Worksheets\[1\];

var newBook = App.Workbooks.Add();

sheet1.Copy(newBook.Worksheets[1]);
sheet2.Copy(newBook.Worksheets[2]);
sheet3.Copy(newBook.Worksheets[3]);

//delete sheet which created by default while creating newBook
newBook.Worksheets[4].delete();

string path = @"path";
if(File.Exits(path))
{
File.Delete(path);
}
newBook.SaveAs(path);
book1.Close();
book2.Close();
book3.Close();
App.Quit();
© www.soinside.com 2019 - 2024. All rights reserved.