繁体   English   中英

使用Interop.Excel将C#与Excel单元格合并

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM