[英]Merge excel cells with C# using Interop.Excel
我想合并几个单元格序列以形成表头分组。
我保留有关合并单元格的值及其列跨度的信息
List<Tuple<string, int>>
这是我到目前为止的内容:
appExcel.DisplayAlerts = false;
int columnCellIndex = 1;
foreach(var captionGroupInfo in extraCaptionGroupings)
{
Microsoft.Office.Interop.Excel.Range currRange = newWorksheet.Range[newWorksheet.Cells[1, columnCellIndex],
newWorksheet.Cells[1, columnCellIndex + captionGroupInfo.Item2]];
currRange.Value2 = captionGroupInfo.Item1;
currRange.Select();
currRange.Merge(Missing.Value);
columnCellIndex += captionGroupInfo.Item2;
}
}
所以代替:
| || Dog 1 || Dog 2 || Cat || Hamster 1 || Hamster 2 ||
--------------------------------------------------------------------------------------
| Id ||Name|Owner|Age||Name|Owner|Age||Name|Owner|Age||Nam|Owner|Age||Name|Owner|Age||
我懂了
| Dogs |
| Id ||Name|Owner|Age|Name|Owner|Age||Name|Owner|Age||Nam|Owner|Age|Name|Owner|Age||
似乎合并了1中的所有单元格。
有什么想法我做错了吗? 即使我只将columnCellIndex增加1,结果仍然不是我期望的。
由于我看不到captionGroupInfo.Item2
的值, captionGroupInfo.Item2
我在这里有点猜测。 从您显示的输出中,我猜您不是要合并第一列。 它看起来像一个非合并列。 因此,当您将columnCellIndex设置为1时; 那么您将从第一列开始。 因此,我将起始列索引更改为2,因为这似乎是您要开始合并单元格的位置。 然后,当获取合并范围时,我将结尾列索引值减去1。 否则范围将是一对多,因为我们从第2列而不是第1列开始。通过这些更改,当我测试captionGroupInfo.Item2
的返回值时,它们工作得很好,它们是3个单元格合并,3个单元格合并,5个单元格合并,5个等等。通过这些更改,它按预期工作。 希望这可以帮助。
int columnCellIndex = 2;
foreach (var captionGroupInfo in extraCaptionGroupings)
{
Microsoft.Office.Interop.Excel.Range currRange = newWorksheet.Range[newWorksheet.Cells[1, columnCellIndex],
newWorksheet.Cells[1, columnCellIndex + captionGroupInfo.Item2 - 1]];
currRange.Value2 = captionGroupInfo.Item1;
currRange.Select();
currRange.Merge(Missing.Value);
columnCellIndex += captionGroupInfo.Item2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.