如何将Excel模板复制到相同Excel中的另一个工作表
本文关键字:Excel 另一个 工作 复制 | 更新日期: 2023-09-27 18:10:21
我是OpenXML的新手。我的概念不完全清楚。我使用以下代码-
Package package = Package.Open(newFile.FullName, FileMode.Open, FileAccess.ReadWrite);
excelDoc = SpreadsheetDocument.Open(package);
WorkbookPart wbPart = excelDoc.WorkbookPart;
Sheet templateSheet = wbPart.Workbook.Descendants<Sheet>().Where((s) => s.Name == "Sheet1").FirstOrDefault();
for (int i = 0; i < (int)(obj.Count / 4); i++)
{
WorkbookPart workBookpart = excelDoc.WorkbookPart;
Workbook workbook = workBookpart.Workbook;
Sheets sheets = workbook.Sheets;
WorksheetPart workSheetPart = excelDoc.WorkbookPart.AddNewPart<WorksheetPart>("workSheet" + (i+2));
Worksheet worksheet = new Worksheet();
SheetData sheetdata = new SheetData();
worksheet.Append(sheetdata);
workSheetPart.Worksheet = worksheet;
sheets.Append(templateSheet.CloneNode(true));
}
for (int i = 0; i < (int)(obj.Count / 4); i++)
{
uint sheetId = 1;
if (excelDoc.WorkbookPart.Workbook.Sheets.Elements<Sheet>().Count() > 0)
{
sheetId = excelDoc.WorkbookPart.Workbook.Sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
Sheet temp = wbPart.Workbook.Descendants<Sheet>().Skip(i + 1).Take(1).FirstOrDefault();
temp.Name = "Sheet" + (i + 2);
temp.Id = "workSheet" + (i + 2);
temp.SheetId = sheetId;
}
此代码正在创建工作表,但模板不存在,存在于"Sheet1"。我该怎么做呢?请建议。
根据您现在拥有的内容判断,您的问题是您正在复制Sheet
,它为您提供模板表的元数据,但不复制任何包含表实际内容的相关WorksheetPart
对象。要做到这一点,你需要Brian Jones在MSDN博客上发表的部分内容,特别是他将工作表及其所有部分复制到新工作簿的部分。如果有必要的话,我可以提供一些例子来说明我是怎么做的。