Excel加载数据到WorksheetPart在code背后加载、数据、Excel、WorksheetPart

2023-09-04 01:20:53 作者:ㄨ┈骨孓里の血腥

您好,大家好我创建一个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数据表的单元格。我只是需要字符串添加一些细胞很可能要在某些数据表或多维数组。

解决方案

 私有静态无效InsertValues​​InWorksheet(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);
        我++;
    }
}
 
excel下code128字体如何自动显示数字

此方法将添加一个新行到指定的工作表,并填写该行的细胞随着从一个数组中的值。在您的code样品,它可以被称为是这样的:

  VAR值=新的[] {富,酒吧,巴兹};

InsertValues​​InWorksheet(newWorksheetPart1,价值观);
InsertValues​​InWorksheet(newWorksheetPart2,价值观);
InsertValues​​InWorksheet(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);