以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]表合并后导出的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105170) |
-- 作者:qingqian369 -- 发布时间:2017/8/13 10:39:00 -- [求助]表合并后导出的问题 原表 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") 这样导出后 请问,怎样才能导出后,单元格也是合并格式的,省的我再在excel里合并了
|
-- 作者:有点甜 -- 发布时间:2017/8/13 10:48:00 -- 直接用saveexcel http://www.foxtable.com/webhelp/scr/0559.htm
|
-- 作者:qingqian369 -- 发布时间:2017/8/14 16:09:00 -- [求助] 不行啊,这上面的几个代码都不能实现,而且,我这个是多层表头,和导出制定列,麻烦再给看看,应该怎么修改代码才能实现合并单元格 |
-- 作者:有点甜 -- 发布时间:2017/8/14 17:09:00 -- 把你不需要的列,隐藏起来,最后saveExcel即可。这样做更简单方便。 |
-- 作者:qingqian369 -- 发布时间:2017/8/15 7:58:00 -- [求助] 嗯嗯,谢谢大大,隐藏列能实现了。还是想问下,有代码可实现导出后自动合并单元格么?选择要隐藏的列,也有些麻烦啊。请大大费心再想想办法,谢谢啦 |
-- 作者:有点甜 -- 发布时间: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
|