以文本方式查看主题 - 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=4207) |
-- 作者:reachtone -- 发布时间:2009/9/3 20:30:00 -- 生成指定excel文件的通用代码 本函数可实现以下功能: 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 -- 发布时间:2009/9/3 20:45:00 -- 收藏,学习,谢谢! |
-- 作者:yangming -- 发布时间:2009/9/3 21:11:00 -- 学习研究!加精! |
-- 作者:狐狸爸爸 -- 发布时间:2009/9/3 21:26:00 -- 顶 |
-- 作者:czy -- 发布时间:2009/9/3 21:46:00 -- 又见精品,顶。 |
-- 作者:blackzhu -- 发布时间:2009/9/4 8:05:00 -- 研究一下,调用不会。 |
-- 作者:mr725 -- 发布时间:2009/9/4 10:22:00 -- 万分感谢,只是没全懂,先收下,细琢磨琢磨 ~ |
-- 作者:pyh6918 -- 发布时间:2009/9/4 11:04:00 -- 收藏!谢谢! |
-- 作者:migold -- 发布时间:2009/9/4 11:35:00 -- 顶, 来迟了 我没用过,试试去 |