在 vb.net 中合并 excel 单元格的更好方法是什么

What is the better way to merge the excel cells in vb.net

提问人:Manjunath M 提问时间:9/13/2023 最后编辑:Manjunath M 更新时间:9/18/2023 访问量:54

问:

我正在尝试将一行的某些单元格合并 vb.net。当我使用

xlApp.Range("A9:A11").Select()
xlApp.Range("A9:A11").Merge()

它工作得很好。

但是当我尝试做

xlWorkSheet.Range(xlWorkSheet.Cells(Rownumber, StartColumn), 
                  xlWorkSheet.Cells(Rownumber, EndColumn)).Merge()

获取错误

错误信息:

HRESULT 异常:0x800A03EC
System.RuntimeType.ForwardCallToInvokeMember (String memberName, BindingFlags flags, Object target, Int320] aWrapperTypes
的堆栈跟踪。MessageData& msgData) 位于 Microsoft.Office.Interop.Excel.Range.Merge(对象跨)
Microsoft.Office.Interop.Excel

我试过了

xlWorkSheet.Range(xlWorkSheet.Cells(Rownumber, StartColumn), 
                  xlWorkSheet.Cells(Rownumber, EndColumn)).Select()

合并前。还是没有运气。

谁能告诉我我在这里错过了什么?

Excel vb.net

评论

0赞 BigBen 9/13/2023
、 的值是什么,何时失败?RownumberStartColumnEndColumn
0赞 Manjunath M 9/18/2023
@BigBen 它们是一些动态整数值,并根据某些条件而变化。例如,类似Rownumber=16, StartCol=3 and Endcolumn=9

答:

1赞 dbasnett 9/13/2023 #1

模式被设置一个范围,然后合并。范围必须有效。合并可能导致数据丢失。

    ' XLSheet is a worksheet object
    ' XLRange is a range object
    '
    XLRange = XLSheet.Range(Cell1:=XLSheet.Cells(sRW + 1, sCOL + 1),
                            Cell2:=XLSheet.Cells(maxRW, maxCOL))
    XLRange.Merge()

评论

0赞 Manjunath M 9/18/2023
我也在做同样的事情,但在一行。我不认为这对逻辑有任何影响。无论如何,我尝试分离设置一个范围,然后合并,就像你建议的那样。这没有任何区别。
0赞 Manjunath M 9/18/2023 #2

主要原因不是合并是如何完成的。由于某种奇怪的原因,Excel中的某些单元格组被标记为表格。因此,表格单元格不允许合并单元格。因此,代码引发了异常。 一旦我将 Excel 模板文件的单元格更改为键入“range”(表格设计 -> 转换为范围)

,下面的代码有效,

xlWorkSheet.Range(xlWorkSheet.Cells(Rownumber, StartColumn), 
                  xlWorkSheet.Cells(Rownumber, EndColumn)).Merge()