ClosedXML 写入 Excel 中的所有工作表

ClosedXML writing to all sheets in Excel

在过去的 24 小时里,我一直在使用 ClosedXML,我觉得我已经从中得到了我需要的一切,除了一个错误。我有一个现有的工作簿,其中目前有 3 个 sheet。每个 sheet 上都有相似的数据,但它们的值不同。我在下面附上了我的伪代码(已更改特定变量名称以保护无辜者)。

下面的代码在 foreach 循环内,因为我正在循环遍历一大组 SQL 表。问题是,ClosedXML 或我所做的事情是将相同的数据写入所有 sheets 并覆盖其前后的 sheets。我觉得也许我做了一些显而易见的事情,但我一直盯着同样的代码看了一段时间,再也看不到明显的错误了。如有任何帮助,我们将不胜感激!

  //Workbook = new workbook and filepath are initialized outside of the loop
                    var worksheet = workbook.Worksheet(1);

                //This is used to help me identify what column it is in, it references an array of alphabet characters later
                int column = 0;

                if(loopCt <= 2)
                {
                    worksheet.Cell("A1").Value = "Identifier";
                    worksheet.Cell("B1").Value = "XYZ Day 1";
                    worksheet.Cell("C1").Value = "XYZ Day 2";
                    worksheet.Cell("D1").Value = "XYZ Day 3";
                    worksheet.Cell("E1").Value = "XYZ Day 4";
                    worksheet.Cell("F1").Value = "XYZ Day 5";
                    worksheet.Cell("G1").Value = "XYZ Day 6";
                    worksheet.Cell("H1").Value = "XYZ Day 7";
                    worksheet.Cell("I1").Value = "XYZ Day 8";
                    worksheet.Cell("J1").Value = "XYZ Day 9";
                    worksheet.Cell("K1").Value = "XYZ Day 10";
                    worksheet.Cell("L1").Value = "XYZ Weekly Total";
                }

                worksheet.Cell($"A{loopCt}").Value = item.identifier;

                for (int i = 0; i < XYZDaily.Count(); i++)
                {
                    column += 1;
                    worksheet.Cell($"{alphabet[column]}{loopCt}").Value = XYZDaily[i];

                }

                worksheet.Cell($"L{loopCt}").Value = XYZWeek;

                workbook.Save();

                //QRS Export

                var worksheetQRS = workbook.Worksheet(2);
                int columnQRS = 0;

                if (QRSCt <= 2)
                {
                    worksheetQRS.Cell("A1").Value = "Identifier";
                    worksheetQRS.Cell("B1").Value = "QRS Day 1";
                    worksheetQRS.Cell("C1").Value = "QRS Day 2";
                    worksheetQRS.Cell("D1").Value = "QRS Day 3";
                    worksheetQRS.Cell("E1").Value = "QRS Day 4";
                    worksheetQRS.Cell("F1").Value = "QRS Day 5";
                    worksheetQRS.Cell("G1").Value = "QRS Day 6";
                    worksheetQRS.Cell("H1").Value = "QRS Day 7";
                    worksheetQRS.Cell("I1").Value = "QRS Day 8";
                    worksheetQRS.Cell("J1").Value = "QRS Day 9";
                    worksheetQRS.Cell("K1").Value = "QRS Day 10";
                    worksheetQRS.Cell("L1").Value = "QRS Weekly Total Test";

                }

                worksheetQRS.Cell($"A{loopCt}").Value = item.Identifier;

                for (int i = 0; i < QRSDaily.Count(); i++)
                {
                    columnQRS += 1;
                    worksheetQRS.Cell($"{alphabet[columnQRS]}{loopCt}").Value = QRSDaily[i];

                }

                worksheetQRS.Cell($"L{loopCt}").Value = QRSWeek;


                workbook.Save();

TL:DR; 将数据写入具有多个 sheet 的现有 spreadsheet, 写在 foreach 循环中

问题:我试图一次瞄准一个 sheet,写入数据,然后移动到下一个 sheet 并写入数据,但它向所有 sheets 在工作簿中,我在文档中找不到有关此特定场景的任何内容。

感谢阅读,

您总是使用工作簿中的第一个工作表:

var worksheet = workbook.Worksheet(1);
                                   ^

您需要为工作表编号使用变量或使用workbook.AddWorksheet()方法。这在文档中的 Creating Multiple Worksheets 下进行了介绍。