Foxtable(狐表)用户栏目专家坐堂 → [求助]关于excel多行标题栏的处理


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

主题:[求助]关于excel多行标题栏的处理

帅哥哟,离线,有人找我吗?
teng0731
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
[求助]关于excel多行标题栏的处理  发帖心情 Post By:2019/7/9 15:20:00 [只看该作者]

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


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


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By:2019/7/9 17:25:00 [只看该作者]

谢谢有点蓝老师,是第二种方式,上面代码完美实现。

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


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By: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编辑过]

 回到顶部