以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于excel多行标题栏的处理  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137554)

--  作者:teng0731
--  发布时间:2019/7/9 15:20:00
--  [求助]关于excel多行标题栏的处理
[求助]关于excel多行标题栏的处理,2007版excel标题有两行,需要将其处理为一行的标题,详见附件表格。求处理实例。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工作簿1.xlsx


--  作者:有点蓝
--  发布时间:2019/7/9 16:12:00
--  
如果是从Foxtable导出的,可以在导出前关闭多行标题效果再导出即可:http://www.foxtable.com/webhelp/topics/2373.htmhttp://www.foxtable.com/webhelp/topics/1992.htm

如果要直接改execl,参考:

Dim Book As New XLS.Book("E:\\问题\\工作簿1.xlsx")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
\'Sheet.ClearMergedCells
Dim d As String
For c As Integer = 0 To Sheet.Cols.Count -1 \'添加列标题
    If Sheet(0, c).Value > "" Then
        d = Sheet(0, c).Value
    End If
    If Sheet(1, c).Value > "" Then
        Sheet(2, c).Value = d & "_" & Sheet(1, c).Value
    Else
        Sheet(2, c).Value = Sheet(0, c).Value
    End If
Next


Book.Save("E:\\问题\\工作簿2.xlsx")
Dim Proc As New Process
Proc.File = "E:\\问题\\工作簿2.xlsx"
Proc.Start()

--  作者:teng0731
--  发布时间:2019/7/9 17:25:00
--  
谢谢有点蓝老师,是第二种方式,上面代码完美实现。
--  作者:teng0731
--  发布时间:2019/7/9 17:37:00
--  
完善了一下代码,新生成标题行以后,将原来的标题行删除掉,形成新的正式表格:

Dim Book As New XLS.Book("c:\\工作簿1.xlsx")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
\'Sheet.ClearMergedCells
Sheet.Rows.Insert(2)
Dim d As String
For c As Integer = 0 To Sheet.Cols.Count -1 \'添加列标题
    If Sheet(0, c).Value > "" Then
        d = Sheet(0, c).Value
    End If
    If Sheet(1, c).Value > "" Then
        Sheet(2, c).Value = d & "_" & Sheet(1, c).Value
    Else
        Sheet(2, c).Value = Sheet(0, c).Value
    End If
Next
Sheet.Rows.RemoveAt(1)
Sheet.Rows.RemoveAt(0)

Book.Save("c:\\工作簿2.xlsx")
Dim Proc As New Process
Proc.File = "c:\\工作簿2.xlsx"
Proc.Start()
[此贴子已经被作者于2019/7/9 17:37:56编辑过]