您好,大家好我创建一个Excel有3个工作表文件中的以下code。
用(S preadsheetDocument US preadSheet = S preadsheetDocument.Create(路径+ @\ UrlReport.xlsx,S preadsheetDocumentType.Workbook ))
{
//创建工作簿
US preadSheet.AddWorkbookPart();
US preadSheet.WorkbookPart.Workbook =新DocumentFormat.OpenXml.S preadsheet.Workbook();
//创建第一页
WorksheetPart newWorksheetPart1 = S preadSheet.WorkbookPart.AddNewPart< WorksheetPart>();
newWorksheetPart1.Worksheet =新DocumentFormat.OpenXml.S preadsheet.Worksheet();
//创建表数据
newWorksheetPart1.Worksheet.AppendChild(新DocumentFormat.OpenXml.S preadsheet.SheetData());
//保存工作表
newWorksheetPart1.Worksheet.Save();
//创建工作表工作簿关系
US preadSheet.WorkbookPart.Workbook.AppendChild(新DocumentFormat.OpenXml.S preadsheet.Sheets());
s$p$padSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.S$p$padsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.S preadsheet.Sheet()
{
ID = S preadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart1)
SheetId = 1,
NAME =工作表Sheet1
});
//创建第二页
WorksheetPart newWorksheetPart2 = S preadSheet.WorkbookPart.AddNewPart&LT; WorksheetPart&GT;();
newWorksheetPart2.Worksheet =新DocumentFormat.OpenXml.S preadsheet.Worksheet();
//创建表数据
newWorksheetPart2.Worksheet.AppendChild(新DocumentFormat.OpenXml.S preadsheet.SheetData());
//保存工作表
newWorksheetPart2.Worksheet.Save();
//创建工作表工作簿关系
s$p$padSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.S$p$padsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.S preadsheet.Sheet()
{
ID = S preadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart2)
SheetId = 2,
NAME =Sheet2的
});
//创建第三片
WorksheetPart newWorksheetPart3 = S preadSheet.WorkbookPart.AddNewPart&LT; WorksheetPart&GT;();
newWorksheetPart3.Worksheet =新DocumentFormat.OpenXml.S preadsheet.Worksheet();
//创建表数据
newWorksheetPart3.Worksheet.AppendChild(新DocumentFormat.OpenXml.S preadsheet.SheetData());
//保存工作表
newWorksheetPart3.Worksheet.Save();
//创建工作表工作簿关系
s$p$padSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.S$p$padsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.S preadsheet.Sheet()
{
ID = S preadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart3)
SheetId = 3,
NAME =工作表Sheet 3
});
US preadSheet.WorkbookPart.Workbook.Save();
}
我需要知道我可以填充的3数据表的单元格。我只是需要字符串添加一些细胞很可能要在某些数据表或多维数组。
解决方案 私有静态无效InsertValuesInWorksheet(WorksheetPart worksheetPart,IEnumerable的&LT;字符串&GT;数值)
{
VAR的工作表= worksheetPart.Worksheet;
变种sheetData = worksheet.GetFirstChild&其中; SheetData&GT;();
VAR行=新行{rowIndex位置= 1}; //在s preadsheet顶部添加行
sheetData.Append(行);
INT I = 0;
的foreach(中值VAR值)
{
VAR电池=新细胞
{
CellValue =新CellValue(值),
数据类型=新EnumValue&LT; CellValues&GT;(CellValues.String)
};
row.InsertAt(单元,I);
我++;
}
}
此方法将添加一个新行到指定的工作表,并填写该行的细胞随着从一个数组中的值。在您的code样品,它可以被称为是这样的:
VAR值=新的[] {富,酒吧,巴兹};
InsertValuesInWorksheet(newWorksheetPart1,价值观);
InsertValuesInWorksheet(newWorksheetPart2,价值观);
InsertValuesInWorksheet(newWorksheetPart3,价值观);
Hello guys I am creating an Excel file with 3 worksheets in the following code.
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();
}
I need to know how I can populate the cells of the 3 datasheets. I need to just add strings to some cells that are probably going to be in some datatable or 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++;
}
}
This method will add a new row to a specified worksheet and fill the row's cells with the values from an array. In your code sample, it could be called like this:
var values = new[] {"foo", "bar", "baz"};
InsertValuesInWorksheet(newWorksheetPart1, values);
InsertValuesInWorksheet(newWorksheetPart2, values);
InsertValuesInWorksheet(newWorksheetPart3, values);