我正在向 Excel 工作簿添加多张工作表。我想在一张纸上放一行,在另一张纸上放另一行。此代码将两行都放在两张纸上。关于如何解决此问题的任何想法?
SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(saveFile, SpreadsheetDocumentType.Workbook);
// Add a WorkbookPart to the document
WorkbookPart workbookPart = ssDoc.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add a WorksheetPart to theWorkbookPart
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = ssDoc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
Sheet sheet1 = new Sheet()
{ Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 1, Name = "Sheet1"
};
Sheet sheet2 = new Sheet()
{
Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 2, Name = "Sheet2"
};
sheets.Append(sheet1);
sheets.Append(sheet2);
Worksheet worksheet = new Worksheet();
SheetData sheetData = new SheetData();
Row headerRow = new Row();
Cell emptyCell = CreateTextCell(cellHeader, index, "");
headerRow.Append(emptyCell);
Row newRow = new Row();
Cell mycell = CreateTextCell(cellHeader, index, "data");
newRow.Append(mycell);
sheetData.Append(headerRow);
sheetData.Append(newRow);
worksheet.Append(sheetData);
worksheetPart.Worksheet = worksheet;
ssDoc.Close();
最佳答案
对于每个 Excel 工作表(具有单独的数据)
- 需要一个单独的
WorkSheetPart
对象 - 需要一个单独的
WorkSheet
对象 - 需要一个单独的
SheetData
对象 - 需要一个单独的
Sheet
对象
看起来像这样:
SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(saveFile,
SpreadsheetDocumentType.Workbook);
WorkbookPart workbookPart = ssDoc.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
Sheets sheets = ssDoc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
// Begin: Code block for Excel sheet 1
WorksheetPart worksheetPart1 = workbookPart.AddNewPart<WorksheetPart>();
Worksheet workSheet1 = new WorkSheet();
SheetData sheetData1 = new SheetData();
// the data for sheet 1
Row rowInSheet1 = new Row();
Cell emptyCell = CreateTextCell(cellHeader, index, "");
rowInSheet1.Append(emptyCell);
sheetData1.Append(rowInSheet1);
worksheet1.AppendChild(sheetData1);
worksheetPart1.Worksheet = workSheet1;
Sheet sheet1 = new Sheet()
{
Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart1),
SheetId = 1,
Name = "Sheet1"
};
sheets.Append(sheet1);
// End: Code block for Excel sheet 1
// Begin: Code block for Excel sheet 2
WorksheetPart worksheetPart2 = workbookPart.AddNewPart<WorksheetPart>();
Worksheet workSheet2 = new WorkSheet();
SheetData sheetData2 = new SheetData();
// the data for sheet 2
Row rowInSheet2 = new Row();
Cell mycell = CreateTextCell(cellHeader, index, "data");
rowInSheet2.Append(mycell);
sheetData2.Append(rowInSheet2);
worksheet2.AppendChild(sheetData2);
worksheetPart2.Worksheet = workSheet2;
Sheet sheet2 = new Sheet()
{
Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart2),
SheetId = 2,
Name = "Sheet2"
};
sheets.Append(sheet2);
// End: Code block for Excel sheet 2
ssDoc.Close();
我不知道为什么要这么复杂。我只是通过浏览一些随机的博客和论坛帖子以及大量试验和错误找到了它。
关于c# - OpenXML 多张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9120544/