如何解决如何使用 C# 和 ClosedXML 将相同的值合并在一起?
我正在尝试使用 C# 中的 ClosedXML 包为 Excel 合并相同的值。
这是我当前的输出......它没有将相同的值合并在一起并留下一些。
例如No.7 合并了两个单元格,而不是第三个。
例如No.9不断合并2个单元格,重复同样的合并。
我目前的逻辑:
// Foreach record
int i = 1;
foreach (var record in ...)
{
i++;
// Minimum Months
// Create Value
worksheet.Cell($"D{i}").Value = record.MinimumMonths.ToString();
// Evaluate value - if they're the same then merge
if(i > 2 && worksheet.Cell($"D{i}").Value.ToString() == worksheet.Cell($"D{i - 1}").Value.ToString())
{
worksheet.Range($"D{i - 1}:D{i}").Merge();
}
}
我不明白我的逻辑哪里出错了。如何将所有相同的值合并在一起?
解决方法
worksheet.Range($"D{i - 1}:D{i}").Merge();
您不应该成对合并单元格。识别具有相同值的单元格范围的第一个和最后一个单元格,并在一个 .Merge()
语句中合并整个范围。
另请注意,当您合并一系列单元格时,只有左上角的单元格保持其值。合并范围内所有其他单元格的值都将被清除。这与 Excel 的做法一致。
您的 .Value.ToString()
等式比较有点幼稚。而是检查 cell1.Value is double d1 && cell2.Value is double d2 && d1.Equals(d2)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。