Foxtable(狐表)用户栏目专家坐堂 → [求助]表合并后导出的问题


  共有1454人关注过本帖树形打印复制链接

主题:[求助]表合并后导出的问题

美女呀,离线,留言给我吧!
qingqian369
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:228 威望:0 精华:0 注册:2016/10/26 12:28:00
[求助]表合并后导出的问题  发帖心情 Post By:2017/8/13 10:39:00 [只看该作者]



我把表做了合并,然后写了导出指定列的代码,可是导出后的excel还是没有合并,应该怎样修改代码才能实现啊?
原表

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170813103626.png
图片点击可在新窗口打开查看
合并后

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170813103555.png
图片点击可在新窗口打开查看

导出excel按钮的代码为

Dim dt As Table = Tables("实验")
Dim nms() As String ={"第一列","第二列","第三列_a","第四列_b","第八列","第九列","第十列"} '要导出的列名
Dim caps() As String={"第一列","第二列","第三列_a","第四列_b","第八列","第九列","第十列"}'对应的列标题
Dim hlvl As Integer = 3
Dim szs() As Integer = {100,100,80} '对应的列宽
Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim jz As xls.style = book.NewStyle
jz.AlignHorz = XLS.AlignHorzEnum.Center
jz.AlignVert = XLS.AlignVertEnum.Center
For c As Integer = 0 To nms.length -1
    Dim ary() As String = caps(c).split("_")
    For i As Integer = 0 To ary.length-1
        sheet(i, c).value = ary(i)
        sheet(i, c).Style = jz
    Next
Next
For i As Integer = 0 To hlvl-1
    Dim pi As Integer = 0
    For c As Integer = 0 To nms.length -2
        If sheet(i,c).text = sheet(i,c+1).text Then
            Dim flag As Boolean = True
            For k As Integer = i-1 To 0 Step -1
                If sheet(k,c).value <> sheet(k,c+1).value Then
                    flag = False
                End If
            Next
            If flag Then
                pi += 1
            Else
                pi = 0
            End If
        Else
            sheet.MergeCell(i, c-pi, 1, pi+1)
            pi = 0
        End If
    Next
    sheet.MergeCell(i, nms.length-pi-1, 1, pi+1)
Next
For c As Integer = 0 To nms.length -1
    Dim pi As Integer = 0
    For i As Integer = hlvl-1 To 0 Step -1
        If sheet(i, c).text = "" Then
            pi += 1
        Else
            sheet.MergeCell(i, c, pi+1, 1)
            Exit For
        End If
    Next 
Next
For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r+hlvl, c).Value = dt.rows(r)(nms(c))
    Next
Next
book.save("C:\Users\SSC\Desktop\实验.xls")


这样导出后

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170813103819.png
图片点击可在新窗口打开查看



请问,怎样才能导出后,单元格也是合并格式的,省的我再在excel里合并了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/13 10:48:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
qingqian369
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:228 威望:0 精华:0 注册:2016/10/26 12:28:00
[求助]  发帖心情 Post By:2017/8/14 16:09:00 [只看该作者]

不行啊,这上面的几个代码都不能实现,而且,我这个是多层表头,和导出制定列,麻烦再给看看,应该怎么修改代码才能实现合并单元格

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/14 17:09:00 [只看该作者]

 把你不需要的列,隐藏起来,最后saveExcel即可。这样做更简单方便。

 回到顶部
美女呀,离线,留言给我吧!
qingqian369
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:228 威望:0 精华:0 注册:2016/10/26 12:28:00
[求助]  发帖心情 Post By:2017/8/15 7:58:00 [只看该作者]

嗯嗯,谢谢大大,隐藏列能实现了。还是想问下,有代码可实现导出后自动合并单元格么?选择要隐藏的列,也有些麻烦啊。请大大费心再想想办法,谢谢啦

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/15 9:47:00 [只看该作者]

1、用代码设置列的显示隐藏,再导出即可。

 

Tables("实验").Cols("第一列").Visible = False

Tables("实验").Cols("第二列").Visible = False

'这里写导出excel的代码

Tables("实验").Cols("第一列").Visible = True

Tables("实验").Cols("第二列").Visible = True

 

2、如果手工编写代码合并单元格的话,比较麻烦,一般都是合并好直接导出比较简单。

 

    如果确实要做,参考这种写法 http://www.foxtable.com/webhelp/scr/2049.htm

 


 回到顶部