以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 结合ExecuteReader 导出excel,请老师看看 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=46862) |
-- 作者:jnletao -- 发布时间:2014/2/28 14:17:00 -- 结合ExecuteReader 导出excel,请老师看看 由于正常查询要用分页,而导出时是所有页导出,所以用了如下代码 FilterStr 是查询条件 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "Select * From {操作日志} Where " & FilterStr dt = cmd.ExecuteReader() Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ex As New Exporter ex.SourceTableName = dt.name \'指定导出表 ex.Format = "Excel" \'导出格式为Excel ex.FilePath = dlg.FileName \'指定目标文件 ex.Export() \'开始导出 End If cmd.ExecuteReader 的临时表没法取表名,怎么办
|
-- 作者:Bin -- 发布时间:2014/2/28 14:31:00 -- 不能这么做,建议你使用一个临时表.把表Fill进去 datatables("临时表名").Fill("Select * From {操作日志} Where " & FilterStr,false) Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ex As New Exporter ex.SourceTableName = "临时表名" \'指定导出表 ex.Format = "Excel" \'导出格式为Excel ex.FilePath = dlg.FileName \'指定目标文件 ex.Export() \'开始导出 End If |
-- 作者:jnletao -- 发布时间:2014/3/5 12:32:00 -- 这是我现在采用方法 If DataTables.Contains("操作日志临时表")
= False Then Dim dtb As New DataTableBuilder("操作日志临时表") dtb.AddDef("用户", Gettype(String),
50) dtb.AddDef("时间", Gettype(String),
50) dtb.AddDef("IP", Gettype(String),
50) dtb.AddDef("MAC",
Gettype(String), 255) dtb.AddDef("涉及表",
Gettype(String), 250) dtb.AddDef("涉及列",
Gettype(String), 250) dtb.AddDef("涉及行",
Gettype(String), 50) dtb.AddDef("类型", Gettype(String),
50) dtb.AddDef("执行操作",
Gettype(String)) dtb.AddDef("日期", Gettype(Date)) dtb.AddDef("原始数据",
Gettype(String)) dtb.Build() End If FilterStr 设置查询条件 DataTables("操作日志临时表").Fill("Select
* From {操作日志} Where " & FilterStr,"htdata",False)
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls"
\'设置筛选器 If dlg.ShowDialog =
DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ex As New Exporter ex.SourceTableName = "操作日志临时表" \'指定导出表 ex.Format = "Excel" \'导出格式为Excel ex.FilePath = dlg.FileName \'指定目标文件 ex.Export() \'开始导出 End If 现在想来,这样方法很笨拙,麻烦。 如果我多个窗体 要做 查询导出,那岂不是要建多个临时表, 求老师们给出个主意。有什么好的方法,即能让用户分页查询,还能全部导出。 |
-- 作者:jnletao -- 发布时间:2014/3/5 12:49:00 -- 晕了,学艺不精,刚才没仔细的fill的用法,fill 不用管表原来的字段的 这是新的代码 AfterLoad If DataTables.Contains("导出临时表") = False Then Dim dtb As New DataTableBuilder("导出临时表") dtb.Build() End If DataTables("导出临时表").Fill("Select * From {订单}",False) 导出按钮click Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ex As New Exporter ex.SourceTableName = "导出临时表" \'指定导出表 ex.Format = "Excel" \'导出格式为Excel ex.FilePath = dlg.FileName \'指定目标文件 ex.Export() \'开始导出 End If |
-- 作者:blackzhu -- 发布时间:2014/3/5 13:18:00 -- Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "Excel文件|*.xls" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ex As New Exporter ex.SourceTableName = dt 这样试试 ex.Format = "Excel" \'导出格式为Excel ex.FilePath = dlg.FileName \'指定目标文件 ex.Export() \'开始导出 End If |