提问人:Manjunath M 提问时间:9/13/2023 最后编辑:Manjunath M 更新时间:9/18/2023 访问量:54
在 vb.net 中合并 excel 单元格的更好方法是什么
What is the better way to merge the excel cells in vb.net
问:
我正在尝试将一行的某些单元格合并 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()
合并前。还是没有运气。
谁能告诉我我在这里错过了什么?
答:
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()
评论
Rownumber
StartColumn
EndColumn
Rownumber=16, StartCol=3 and Endcolumn=9