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 下进行了介绍。
在过去的 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 下进行了介绍。