以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]读取excel时,如何判断某一个单元格是合并的?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189343)

--  作者:moseser
--  发布时间:2023/11/26 18:55:00
--  [求助]读取excel时,如何判断某一个单元格是合并的?
读取excel时,如何判断某一个单元格是合并的?并判断是哪几个位置的单元格合并的?
--  作者:有点蓝
--  发布时间:2023/11/26 19:58:00
--  
比如:

Dim t As Table = Tables("表A")
Dim r1 As C1.Win.C1FlexGrid.CellRange = t.Grid.GetMergedRange(t.RowSel + 1, t.ColSel + 1)
If r1.IsSingleCell Then
    Output.Show("没合并")
Else
    Output.Show(r1.r1) \'首行
    Output.Show(r1.r2) \'末行
    Output.Show(r1.c1) \'左列
    Output.Show(r1.c2) \'右列
End If 


--  作者:moseser
--  发布时间:2023/11/27 10:50:00
--  回复:(有点蓝)比如:Dim t As Table = Tables("表A...
不是对软件里面的表格,而是对即将要导入的excel 表格分析,如果是合并的话,我想着提前处理下
--  作者:有点蓝
--  发布时间:2023/11/27 11:04:00
--  
需要使用vbs判断:http://www.foxtable.com/webhelp/topics/2121.htm

  • Merge

    合并单元格。
    利用Merge方法,或将MergeCells属性设置为True,都可以合并单元格。如:

    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range = Ws.Range("A1:D10")
    App.DisplayAlerts = False \'加上此行可禁止弹出合并前的提示
    Rg.Merge  \'合并指定区域的单元格
    \'Rg.MergeCells = True \'用这种方式也可以合并
    App.Visible = True
     
  • UnMerge

    取消合并单元格。
    利用UnMerge方法,或将MergeCells属性设置为False,可将已经合并的单元格重新分解为独立的单元格。
    如下面的代码就是先利用MergeArea属性判断某个单元格是否为合并单元格的一部分,然后再进行取消:

    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range = Ws.Range("A1")
    If Rg.MergeArea.Address = Rg.Address Then
        MessageBox.Show("该单元格区域并不是合并后的单元格! ")
    Else
        App.DisplayAlerts = False   \'加上此行可禁止弹出合并前的提示
        Rg.UnMerge  \'取消合并
        \'Rg.MergeCells = False  \'用这种方式也可以取消
    End If
    App.Visible = True