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


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

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

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望: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
  

[本帖被加为精华]
 回到顶部