Запись ClosedXML на все листы в Excel - PullRequest
0 голосов
/ 12 июня 2018

Я работал с ClosedXML в течение последних 24 часов, мне кажется, что я получил из него все, что мне нужно, кроме одной ошибки.У меня уже есть рабочая тетрадь с 3 листами.Аналогичные данные будут на каждом листе, но это будут разные значения.Ниже я прикрепил свой псевдокод (определенные имена переменных были изменены, чтобы защитить невинных).

Код ниже находится внутри цикла foreach, поскольку я зацикливаюсь на большом наборе таблиц SQL.Проблема в том, что ClosedXML или что-то, что я сделал, записывает одни и те же данные на все листы и перезаписывает листы спереди и сзади.Возможно, я сделал что-то очевидное, но некоторое время я смотрел на один и тот же код и больше не вижу явную ошибку.Любая помощь будет оценена!

  //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;Запись данных в существующую электронную таблицу с несколькими листами, записанная в цикле foreach

Проблема: я пытаюсь ориентироваться на один лист за раз, записывать данные, переходить на следующий лист и записывать данные, но этозаписывая одни и те же данные на все листы рабочей книги, я не могу найти в документации ничего об этом конкретном сценарии.

Спасибо за чтение,

1 Ответ

0 голосов
/ 13 июня 2018

Вы всегда используете первый рабочий лист в рабочей книге:

var worksheet = workbook.Worksheet(1);
                                   ^

Вам необходимо использовать переменную для номера рабочего листа или использовать метод workbook.AddWorksheet().Это описано в Создание нескольких рабочих листов в документации.

...