我的项目是从不同的工作簿(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 添加到该工作簿?
你可以试试这样的东西
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();
以上解决方案仅适用于一张纸,如果您想要更多纸,那么这是我迄今为止得到的最简单的解决方案
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();