C# 点击导出按钮GridView导出到Excel时不弹出打开或保存对话框,而是直接将Excel打开,如何实现 C# 点击导出按钮GridView导出到Excel时不弹出打开或保存对话框,而是直接将Excel打开,如何实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //导出按钮 protected void Button3_Click(object sender, EventArgs e) { Export("application/ms-excel", "学生成绩报表.xls"); } private void Export(string FileType, string FileName) { Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF7; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; this.EnableViewState = false; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); GridView1.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); } 三楼的方法和我用的是一样的,仍然会弹出对话框,不行的这个好像是微软的下载机制,在不同的浏览器里面弹出形式还有不同,web程序貌似没有那么大权利去规避下载形式,闹心死了 用IE打开?这样好像没有什么必要吧..如果用Office打开...要先把文件保存到硬盘上,然后在打开文本文件我这样用过,反正大概思路是这样的, 可以考虑像QQ共享那样啊,将数据生成一个静态页,点击"HTML页面"查看,就跳到这个页面。而点击下载时,导出为EXCEL,不过那个HTML查看页的样式不大好控制倒是真的。 静态数据导出不是把页面区域导出到excel了么,需要用javascript,还要调用ActiveX,用户使用时候浏览器的安全级别太高还不能用,需要用户自己改浏览器安全级别,这不行的。web程序烦啊 在代码里面设置...1 #region 导出当前页到Excel中 2 3 //按下导出按钮 4 private void button7_Click(object sender, EventArgs e) 5 { 6 print(dataGridView1); 7 } 8 public void print(DataGridView dataGridView1) 9 { 10 //导出到execl 11 try 12 { 13 //没有数据的话就不往下执行 14 if (dataGridView1.Rows.Count == 0) 15 return; 16 //实例化一个Excel.Application对象 17 Microsoft.Office.Interop.Excel.Application excel =new Microsoft.Office.Interop.Excel.Application(); 18 19 //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写 20 excel.Visible =false; 21 22 //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错 23 excel.Application.Workbooks.Add(true); 24 //生成Excel中列头名称 25 for (int i = 0; i < dataGridView1.Columns.Count; i++) 26 { 27 excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText; 28 } 29 //把DataGridView当前页的数据保存在Excel中 30 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 31 { 32 for (int j = 0; j < dataGridView1.Columns.Count; j++) 33 { 34 if (dataGridView1[j, i].ValueType ==typeof(string)) 35 { 36 excel.Cells[i + 2, j + 1] ="'" + dataGridView1[j, i].Value.ToString(); 37 } 38 else 39 { 40 excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString(); 41 } 42 } 43 } 44 45 //设置禁止弹出保存和覆盖的询问提示框 46 excel.DisplayAlerts =false; 47 excel.AlertBeforeOverwriting =false; 48 49 //保存工作簿 50 excel.Application.Workbooks.Add(true).Save(); 51 //保存excel文件 52 excel.Save("D:" +"\\KKHMD.xls"); 53 54 //确保Excel进程关闭 55 excel.Quit(); 56 excel =null; 57 58 } 59 catch (Exception ex) 60 { 61 MessageBox.Show(ex.Message,"错误提示"); 62 } 63 }64 #endregion 这个不是winform的datagridview么,还要用com组件? 我的是web的,也这样? .... 自己改改啊 他这里是 读取datagridview 你换成girdview 不就行了吗 都是循环读取数据.. 你先自己改改吧 实在不改不了 我再帮你改吧... COM组件 在项目添加引用里面 添加就行... 一般根据你机器安装的office来 1.调用Excel的COM组件2.利用命令行System.Diagnostics.Process.Start(@"C:\a.xls"); //路径 你好,我用了你的这个方法在Web中的girdview中提示错误 6 无法将带 [] 的索引应用于“System.Web.UI.WebControls.GridView”类型的表达式 D:\【.Net开发环境池】\项目实战\Stock_inquiry_system\UI\InventoryManagement.aspx.cs 73 21 D:\...\UI\ 象excel一样可伸缩的表控件 倒排表(倒排索引或倒排文件)的英文怎么说? 关于Post提交的问题。。。。高手看看。。。。 我刚用了VS2005做了一个网站,在调试状态下一切正常,可在IIS里浏览的时候就老报web.config错误 设定gridview显示列内容格定 通常开发一个B/S模式下的3层结构的系统,该如何入手呢?开发的流程大概如何呢? JS中怎么点激treeview一个节点时展开子节点? 如何实现大文件的上传? 如何判断日期 用C#生成的word document对象,怎么设定文件->页面设置->方向 da.Update没有成功,请求高手协助! asp.net运行环境求解
protected void Button3_Click(object sender, EventArgs e)
{
Export("application/ms-excel", "学生成绩报表.xls");
} private void Export(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
如果用Office打开...
要先把文件保存到硬盘上,然后在打开
文本文件我这样用过,反正大概思路是这样的,
2
3 //按下导出按钮
4 private void button7_Click(object sender, EventArgs e)
5 {
6 print(dataGridView1);
7 }
8 public void print(DataGridView dataGridView1)
9 {
10 //导出到execl
11 try
12 {
13 //没有数据的话就不往下执行
14 if (dataGridView1.Rows.Count == 0)
15 return;
16 //实例化一个Excel.Application对象
17 Microsoft.Office.Interop.Excel.Application excel =new Microsoft.Office.Interop.Excel.Application();
18
19 //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
20 excel.Visible =false;
21
22 //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
23 excel.Application.Workbooks.Add(true);
24 //生成Excel中列头名称
25 for (int i = 0; i < dataGridView1.Columns.Count; i++)
26 {
27 excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
28 }
29 //把DataGridView当前页的数据保存在Excel中
30 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
31 {
32 for (int j = 0; j < dataGridView1.Columns.Count; j++)
33 {
34 if (dataGridView1[j, i].ValueType ==typeof(string))
35 {
36 excel.Cells[i + 2, j + 1] ="'" + dataGridView1[j, i].Value.ToString();
37 }
38 else
39 {
40 excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
41 }
42 }
43 }
44
45 //设置禁止弹出保存和覆盖的询问提示框
46 excel.DisplayAlerts =false;
47 excel.AlertBeforeOverwriting =false;
48
49 //保存工作簿
50 excel.Application.Workbooks.Add(true).Save();
51 //保存excel文件
52 excel.Save("D:" +"\\KKHMD.xls");
53
54 //确保Excel进程关闭
55 excel.Quit();
56 excel =null;
57
58 }
59 catch (Exception ex)
60 {
61 MessageBox.Show(ex.Message,"错误提示");
62 }
63 }
64 #endregion
我的是web的,也这样?
他这里是 读取datagridview 你换成girdview 不就行了吗
都是循环读取数据..
你先自己改改吧 实在不改不了 我再帮你改吧...
2.利用命令行
System.Diagnostics.Process.Start(@"C:\a.xls"); //路径