方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载
优点:
1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。
2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。
3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。
实现方法:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
DataSet ds=new DataSet();
da.Fill(ds,"table1");
DataTable dt=ds.Tables["table1"];
string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
sw.WriteLine("自动编号,姓名,年龄");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.WriteFile(name); // 把文件流发送到客户端
Response.End();
方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流
优点:
1、随时生成,不需要占用资源
2、可以结合身份认证
3、同样利于数据交换
实现方法:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn);
DataSet ds=new DataSet();
da.Fill(ds,"table1");
DataTable dt=ds.Tables["table1"];
StringWriter sw=new StringWriter();
sw.WriteLine("自动编号,姓名,年龄");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
}
sw.Close();
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号
代码修改如下:
sw.WriteLine("自动编号\t姓名\t年龄");
foreach(DataRow dr in dt.Rows)
{
sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]);
}
另外,修改输出的文件扩展名为xls即可。
方法三:从datagrid导出html代码,生成excel文件,给客户端下载
优点:
1、有固定的格式,样子好看(datagrid的样子)
局限性:
1、不适合数据交换,里面有html代码,比较乱,没有固定格式
2、datagrid不能有分页、排序等,否则出错
实现方法:
Response.Clear();
Response.Buffer= false;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); Response.ContentType = "application/ms-excel"; this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
在这里说明一点:有的网友反映代码出现“没有dr["id"]”之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。
还有就是如果文件名需要中文的话,这么修改Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode("中文",System.Text.Encoding.UTF8)+".xls");
分享到:
相关推荐
在这个场景中,我们将探讨如何使用VB.NET的DataGrid控件与Microsoft Access数据库进行连接,以便显示、编辑或管理数据库中的数据。 首先,我们需要确保已经安装了必要的组件,包括Visual Studio IDE和ADO.NET数据...
DataGrid控件用于显示数据库中的数据,而将DataGrid中的数据导出到Excel是一种常见的需求,以便进行数据分析、报表生成或者方便用户共享。以下将详细介绍如何通过VB.NET编写代码实现这一功能。 首先,我们需要创建...
在这个“wpf-datagrid-access DB”主题中,我们将深入探讨如何利用WPF Datagrid与Microsoft Access数据库进行交互,实现数据的读取、更新和保存。 1. **WPF Datagrid简介** - Datagrid是WPF中的一个数据展示控件,...
C#如何将DataGrid数据输出到Excel文件呢?,这是一个ASP.NET WEB测试代码,数据库为access,把Access中的内容导出到Excel文件中,并保持数据格式不变,测试时请在ASP.NET3.5环境以上进行,数据库文件路径请修改Web....
在本项目中,"vc++6.0 MFC ADO+datagrid+access"涉及到了三个关键组件:ADO(ActiveX Data Objects)、datagrid控件以及Access数据库。 1. ADO:ADO是微软的数据访问技术,它允许开发者通过COM接口与各种数据源进行...
在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用Microsoft DataGrid控件连接到ACCESS数据库,构建一个基于MFC(Microsoft Foundation Classes)的用户界面程序。MFC是微软提供的C++库,用于简化...
3. **绑定DATAGRID或HFLEXGRID**:将记录集绑定到DATAGRID或HFLEXGRID控件,这样控件就会自动填充并显示数据库中的数据。对于DATAGRID,可能需要手动映射字段到控件列;而对于HFLEXGRID,可能需要设置行数、列数以及...
在本文中,我们将深入探讨如何在Windows Presentation Foundation(WPF)中使用DataGrid控件与Access数据库进行数据绑定。WPF是.NET Framework的一部分,提供了一种强大的方式来创建丰富的、交互式的用户界面。数据...
VB6 设计带记忆的数据录入窗口,这种记忆实际上是将DataGrid临时输入的数据存入到数据库中了,是一个数据库应用范例,本例子中的数据库采用的Access。在本例中,用户临时对任意DataGrid行列操作时输入的内容,临时...
本教程将探讨如何使用DataGrid和数据控件来访问并展示Access数据库中的数据。这些控件在VB6(Visual Basic 6)及早期版本中非常常见,并且在Windows XP和Windows 2K等操作系统上运行良好。 DataGrid控件是一个用于...
利用C#.Winfrom编程实现导入excel数据到DataGridView及Access中,我的程序时用VS.NET2008写的,里面附带了一个数据库及导入的excel文件,程序有不足之处请大家原谅!有问题的请在CSDN上给我留言。
本例子是wpf中datagrid的增加修改,对于datagrid中的canuseraddrows=true,对当前空白行进行的添加数据,修改时,鼠标离开焦点可自动更新数据库,删除等等。不需要多余的界面进行添加修改等,利用datagrid的属性,...
在VB.NET项目中,可以通过拖放的方式将DataGrid控件添加到窗体上,并通过数据绑定技术将它与数据库连接。 1. **创建数据库连接**: 在使用DataGrid之前,首先要建立与Access数据库的连接。这通常通过ADO.NET的`...
VB中的ADO控件和DATAGrid数据打印报表,一个VB打印的例子,报表生成的例子,数据取自Access数据库,使用Ado将数据从Access读出后绑定在DataGrid报表中,在利用打印组件输出到打印机,效果截图如上所示。
在这个“VB利用DataGrid控件辅助录入数据”的实例中,我们将深入探讨如何有效地利用DataGrid控件来提高数据录入的效率和用户体验。 首先,DataGrid控件是Microsoft Windows Forms应用程序中的一个标准控件,它是...
本教程将深入探讨如何利用DataGrid控件来显示数据库中的数据信息。 1. **DataGrid控件简介** DataGrid控件是.NET框架的一部分,适用于Windows Forms应用程序。它提供了一个二维表格,可以用来展示结构化数据,比如...
要实现增删改查,首先需要将DataGrid绑定到一个数据集合,如ObservableCollection,它能监听到内部元素的变化并更新视图。 3. **增(Add)** 为了实现添加功能,通常会在DataGrid下方添加一个“新增”按钮,点击时...
- 将DataGrid的DataSource属性设置为Adodc控件,这样DataGrid就会显示Adodc中的Recordset数据。 - DataGrid的DataMember属性设置为Adodc的RecordsetName,确保DataGrid能正确绑定到记录集。 4. **显示数据**: -...
在VB中,DataGrid控件通常通过ADO(ActiveX Data Objects)连接到数据源,如SQL Server、Access数据库或其他ODBC数据源。你可以通过设置控件的DataSource属性来指定数据源,而DataMember属性则指定了要在DataGrid中...