Foxtable(狐表)用户栏目专家坐堂 → [求助]能不能用代码实现 导出excel的时候保持合并格式


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

主题:[求助]能不能用代码实现 导出excel的时候保持合并格式

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10368 威望:0 精华:1 注册:2018/1/20 12:40:00
[求助]能不能用代码实现 导出excel的时候保持合并格式  发帖心情 Post By:2023/4/19 9:48:00 [只看该作者]

如题

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 9:52:00 [只看该作者]


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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10368 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2023/4/19 10:19:00 [只看该作者]

因为我导出的时候希望导出 字典对应的数据,所以在代码上做了些调整,不是用saveexcel 导出的,帮忙看下是不是能够加合并格式导出呢

    Dim t As Table = CurrentTable
    
    Dim Book As New XLS.Book '定义一个Excel工作簿
    Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
    Dim lms As new List(of String)
    Dim lmsc As new List(of String)
    Dim flg As New SaveExcelFlags
    'flg.RowNumber = True
    flg.CellStyle = True
    For Each c As Col In t.Cols
        If c.Visible = True
            lms.Add(c.Name)
            lmsc.Add(c.Caption)
            
        End If
    Next
    For i As Integer = 0 To lms.Count-1
        
        Sheet(0,i).Value = lmsc(i)   
    Next
    For r As Integer = 0 To t.Rows.Count-1 '填入数据
        For i As Integer = 0 To lms.Count-1
            try
                
                If     lms(i).Contains("状态") Then
                    
                    
                    Sheet(r+1,i).Value =  t.Cols(lms(i)).DataMap(t.rows(r)(lms(i)))
                    If Sheet(r+1,i).Value="" Then  '----如果datamap读取出来是空置则读取原始值
                        Sheet(r+1,i).Value =  t.rows(r)(lms(i))
                        
                    End If
                Else
                    Sheet(r+1,i).Value =  t.rows(r)(lms(i))
                    
                End If
            catch ex As Exception
                
                Sheet(r+1,i).Value =  t.rows(r)(lms(i))
                
            End try
            
        Next
    Next
    Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
    dlg.Filter= "Excel文件|*.xls" '设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then
        Book.Save(dlg.FileName)
        Dim Proc As New Process
        Proc.File = dlg.FileName
        Proc.Start()
    End If
[此贴子已经被作者于2023/4/19 10:18:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 10:25:00 [只看该作者]


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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10368 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2023/4/19 10:32:00 [只看该作者]

我怎么判断在foxtable中已经合并了的起始位置呢


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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 10:39:00 [只看该作者]

这个要自己去计算了,遍历的时候使用变量记录一下,比如第一行编号1,遍历到第7行,编号为2,和变量记录的1不同,那就说明第一行到第6行需要合并

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10368 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2023/4/19 12:14:00 [只看该作者]

有2个问题,1、如何设置合并后的字是上下居中的呢。2.
我如果要多次合并好像下面的代码是不能实现的
Sheet.MergeCell(1,0,11,0)
Sheet.MergeCell(12,0,4,1)

[此贴子已经被作者于2023/4/19 12:17:03编辑过]

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 13:29:00 [只看该作者]

1、http://www.foxtable.com/webhelp/topics/1161.htm
2、Sheet.MergeCell(1,0,11,1)

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10368 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2023/4/19 23:52:00 [只看该作者]

 图片点击可在新窗口打开查看这样的话只有A被合并了。下面的B和C并没有合并
[此贴子已经被作者于2023/4/19 23:52:11编辑过]

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/20 9:20:00 [只看该作者]

代码?

 回到顶部
总数 12 1 2 下一页