Excel将数据添加到后台代码中的WorksheetPart

你好,我正在创build一个Excel文件与3个工作表在下面的代码。

using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(path + @"\UrlReport.xlsx", SpreadsheetDocumentType.Workbook)) { // create the workbook spreadSheet.AddWorkbookPart(); spreadSheet.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); // CREATE FIRST SHEET WorksheetPart newWorksheetPart1 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); newWorksheetPart1.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); // create sheet data newWorksheetPart1.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); // save worksheet newWorksheetPart1.Worksheet.Save(); // create the worksheet to workbook relation spreadSheet.WorkbookPart.Workbook.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheets()); spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart1), SheetId = 1, Name = "Sheet1" }); //CREATE SECOND SHEET WorksheetPart newWorksheetPart2 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); newWorksheetPart2.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); // create sheet data newWorksheetPart2.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); // save worksheet newWorksheetPart2.Worksheet.Save(); // create the worksheet to workbook relation spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart2), SheetId = 2, Name = "Sheet2" }); //CREATE THIRD SHEET WorksheetPart newWorksheetPart3 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); newWorksheetPart3.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(); // create sheet data newWorksheetPart3.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); // save worksheet newWorksheetPart3.Worksheet.Save(); // create the worksheet to workbook relation spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart3), SheetId = 3, Name = "Sheet3" }); spreadSheet.WorkbookPart.Workbook.Save(); } 

我需要知道如何填充3个数据表的单元格。 我只需要将string添加到某些可能在某些数据表或multidimensional array中的单元格中。

 private static void InsertValuesInWorksheet(WorksheetPart worksheetPart, IEnumerable<string> values) { var worksheet = worksheetPart.Worksheet; var sheetData = worksheet.GetFirstChild<SheetData>(); var row = new Row { RowIndex = 1 }; // add a row at the top of spreadsheet sheetData.Append(row); int i = 0; foreach (var value in values) { var cell = new Cell { CellValue = new CellValue(value), DataType = new EnumValue<CellValues>(CellValues.String) }; row.InsertAt(cell, i); i++; } } 

此方法将向指定的工作表添加新行,并使用数组中的值填充行的单元格。 在你的代码示例中,可以这样调用它:

 var values = new[] {"foo", "bar", "baz"}; InsertValuesInWorksheet(newWorksheetPart1, values); InsertValuesInWorksheet(newWorksheetPart2, values); InsertValuesInWorksheet(newWorksheetPart3, values);