Foxtable(狐表)用户栏目专家坐堂 → 生成指定excel文件的通用代码


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

主题:生成指定excel文件的通用代码

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


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
生成指定excel文件的通用代码  发帖心情 Post By:2009/9/3 20:30:00 [只看该作者]

本函数可实现以下功能:
1、根据指定表、指定列、指定表名生成excel文件;
2、如果目标文件名不存在,自动创建文件和sheet表;
3、如果目标文件已经打开,将给出提示;
4、如果目标文件存在同名表,可以选择追加,也可以选择覆盖。

函数名为ToList,调用方式为:
Functions.Execute("ToExcel",table,cols,sheetname,file,bl)
其中,table为要导出的table表名,Table型
        cols为要导出的列名,String型,如:A|B|C
        Sheetname为导出到excel中的表名,String型
        file为目标文件名
        bl为Boolean型,设为True时,自动覆盖同名表;否则将导出的数据添加在同名表后面。

函数ToList代码:

'5个入口参数:0来源表\1来源列\2目标表名\3目标文件\4是否覆盖
Dim t As Table = Args(0)
'定义工作簿
Dim Book As New XLS.Book
Dim Ss as String
If FileSys.FileExists(Args(3)) Then
    Book = New XLS.Book(Args(3))
    For i as Integer = 0 to Book.Sheets.Count - 1
        Ss = Ss & "," & Book.Sheets(i).Name
    Next
End If
Book.DefaultFont = New Font("宋体",9)
'定义显示风格
Dim Style As XLS.Style
Style = Book.NewStyle() '定义新样式
Style.BorderTop = XLS.LineStyleEnum.Thin
Style.BorderBottom = XLS.LineStyleEnum.Thin
Style.BorderLeft = XLS.LineStyleEnum.Thin
Style.BorderRight = XLS.LineStyleEnum.Thin
Style.BorderColorTop = Color.Black
Style.BorderColorBottom = Color.Black
Style.BorderColorLeft = Color.Black
Style.BorderColorRight = Color.Black
'定义工作表
Dim Sheet As XLS.Sheet
Dim qsh as Integer = 0     '默认起始行从0开始
If FileSys.FileExists(Args(3)) = False Then  '如果文件不存在
    Sheet = Book.Sheets(0)
    Sheet.Name = Args(2)
Else
    If Ss.Contains(Args(2)) = False Then     '如果同名表不存在
        Sheet = Book.Sheets.Add(Args(2))
    Else
        If Args(4) = False Then             '如果不允许覆盖
            Sheet = Book.Sheets(Args(2))
            qsh = Sheet.Rows.Count + 1
        Else                                 '如果允许覆盖,先删除同名表再重建
            Book.Sheets.Remove(Args(2))
            Sheet = Book.Sheets.Add(Args(2))
        End If
    End If
End If
Sheet.ShowGridLines = False
'写入数据
Dim Cols as String() = Args(1).Split("|")
For c As Integer = 0 to Cols.Length - 1   '添加列标题
    Sheet(qsh,c).Value = Cols(c)
    Sheet(qsh,c).Style = Style
Next
For r As Integer = 0 to t.Rows.Count - 1   '填入数据
    For c As Integer = 0 to Cols.Length - 1
        Sheet(qsh + r + 1,c).Value = t.Rows(r)(c)
        Sheet(qsh + r + 1,c).Style = Style    '单元格样式
    Next
Next
'判断目标文件的有效性
If FileSys.FileExists(Args(3)) Then
    Try
        Dim f As New System.IO.FileStream(Args(3),IO.FileMode.Open,IO.FileAccess.Read,IO.FileShare.None)
        f.Dispose()
        Book.Save(Args(3))
        MessageBox.Show("数据已经成功导出! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Catch ex As Exception
        MessageBox.Show("目标文件处于打开状态, 系统无法保存! 请将其关闭后重新导出本表数据! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    End Try
Else
   Book.Save(Args(3))
   MessageBox.Show("数据已经成功导出! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
  

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
lkqing
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:492 积分:4243 威望:0 精华:0 注册:2008/9/1 20:47:00
  发帖心情 Post By:2009/9/3 20:45:00 [只看该作者]

收藏,学习,谢谢!

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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/9/3 21:11:00 [只看该作者]

学习研究!加精!

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/9/3 21:26:00 [只看该作者]


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/9/3 21:46:00 [只看该作者]

又见精品,顶。


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/9/4 8:05:00 [只看该作者]

研究一下,调用不会。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/9/4 10:22:00 [只看该作者]

万分感谢,只是没全懂,先收下,细琢磨琢磨 ~


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


加好友 发短信
等级:五尾狐 帖子:1128 积分:11029 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2009/9/4 11:04:00 [只看该作者]

收藏!谢谢!

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


加好友 发短信
等级:一尾狐 帖子:447 积分:4572 威望:0 精华:0 注册:2009/1/11 11:00:00
  发帖心情 Post By:2009/9/4 11:35:00 [只看该作者]

顶,
来迟了

我没用过,试试去

 回到顶部