快要崩溃了!!ASP导出EXCEL问题

zbdzjx 2014-06-26 02:38:50
我找了一段ASP的代码,说是可以将网页结果保存成EXCEL下载。部分代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<% Response.Buffer = True %>
<% Response.Expires = 0 %>
<% response.ContentType ="application/vnd.ms-excel" %>
<% response.SetHeader "Content-Disposition", "attachment; filename=ExportExcel.xls"%>


调用这段代码是ExportExcel.asp?strSQL='select * from 表…………'
但是当语句执行时,提示保存的文件名不是我想要的ExportExcel.xls,而是类似ExportExcel.asp?strSQL='select * from 表…………'这样的文件名。

请问一下,要怎样设定才能让提示保存的文件名是我想要的。
我在网上搜了,都是说用 response.SetHeader "Content-Disposition", "attachment; filename=ExportExcel.xls" 这一句,但没效果。
...全文
824 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiutian_2248570182 2014-06-29
  • 打赏
  • 举报
回复
创建Excel文件并保存 private void btn_Select_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了路径 { txt_Path.Text = folderBrowserDialog1.SelectedPath;//显示选择的路径 } } private void btn_Create_Click(object sender, EventArgs e) { string P_str_path = txt_Path.Text;//记录路径 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();//实例化Excel对象 Microsoft.Office.Interop.Excel.Workbook newWorkBook = excel.Application.Workbooks.Add(true);//添加新工作簿 object missing = System.Reflection.Missing.Value;//获取缺少的object类型值 newWorkBook.Worksheets.Add(missing, missing, missing, missing);//向Excel文件中增加工作表 if (P_str_path.EndsWith("\\"))//判断路径是否\结尾 newWorkBook.SaveCopyAs(P_str_path + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");//保存Excel文件 else newWorkBook.SaveCopyAs(P_str_path + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls");//保存Excel文件 MessageBox.Show("Excel文件创建成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示信息CodeGo.net/ System.Diagnostics.Process[] excelProcess = System.Diagnostics.Process.GetProcessesByName("EXCEL");//实例化进程对象 foreach (System.Diagnostics.Process p in excelProcess) p.Kill();//关闭进程 }
强风吹拂 2014-06-26
  • 打赏
  • 举报
回复
我用后台写的,从excel读取数据然后存储到数据库里面Console.WriteLine("程序已经启动,在信息没有录入完成前,请不要关闭程序 否则导致下次录入的时候重新录入,导致数据库重复数据 "); // 1 - 启动Excel Application excel = new Application(); // excel的路径 Workbook workbook = excel.Workbooks.Open(@"F:\Test\Test7.xls"); // 2 - 打开第一个“工作表”, Worksheet worksheet = workbook.Worksheets.get_Item(1); string connstr = "连接字符串"; SqlConnection conn = new SqlConnection(connstr); conn.Open(); // 3 - 读取excel里面有几行 int rows = worksheet.Cells.Rows.Count; //做循环 Console.WriteLine("正在录入数据,请稍等!"); for (int i = 3; i <= rows; i++) { Range range = worksheet.Cells.get_Range("A" + i.ToString(), "I" + i.ToString());//get_Range获取范围 单元格 if (String.IsNullOrEmpty(range.get_Item(1, 1).value())) { continue; } else { var a = range.get_Item(1, 1).value(); if (a.Trim() == null) { continue; } } SqlCommand cmd = new SqlCommand("insert into arch_temp (hpzl,hphm,clsbdm,fdj_number,card_code,owner_name,clxh,cllx,cart_id)values(@v1,@v2,@v3,@v4,@v5,@v6,@v7,@v8,@v9)", conn); SqlParameter[] parameters = { new SqlParameter("@v1",SqlDbType.VarChar,50), new SqlParameter("@v2",SqlDbType.VarChar,50), new SqlParameter("@v3",SqlDbType.VarChar,50), new SqlParameter("@v4",SqlDbType.VarChar,50), new SqlParameter("@v5",SqlDbType.VarChar,50), new SqlParameter("@v6",SqlDbType.VarChar,100), new SqlParameter("@v7",SqlDbType.VarChar,50), new SqlParameter("@v8",SqlDbType.VarChar,50), new SqlParameter("@v9", SqlDbType.VarChar,50)}; parameters[0].Value = range.get_Item(1, 1).Value; parameters[1].Value = range.get_Item(1, 2).Value; parameters[2].Value = range.get_Item(1, 3).Value; parameters[3].Value = range.get_Item(1, 4).Value; parameters[4].Value = range.get_Item(1, 5).Value; parameters[5].Value = range.get_Item(1, 6).Value; parameters[6].Value = range.get_Item(1, 7).Value; parameters[7].Value = range.get_Item(1, 8).Value; parameters[8].Value = range.get_Item(1, 9).Value; cmd.Parameters.AddRange(parameters); int s=cmd.ExecuteNonQuery(); if (s == 0) { break; } if (i % 1 == 0) Console.WriteLine("已经录入{0}条数据", i); } conn.Close(); Console.WriteLine("OK!已经帮您把excel的数据完成录入到数据库里面"); Console.ReadKey();
zbdzjx 2014-06-26
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
<% response.SetHeader "Content-Disposition", "attachment; filename=""ExportExcel.xls"""%>


文件名用"括起试试


还是不行。
是不是我搞错方向了???

如下图:

我是调用了ExportExcel.asp文件,将查询的SQL语句用于参数传进去。再用“response.ContentType ="application/vnd.ms-excel"”这句改这个文件为EXCEL格式,这样就能将网页结果保存成EXCEL文件了。
但这个EXCEL文件默认的名字却将参数的信息也加了进去,这样就无法保存了。
我在网上搜了一下,说是用“response.SetHeader "Content-Disposition", "attachment; filename=ExportExcel.xls"”这句能改保存的文件名。但我用了没效果。
Go 旅城通票 2014-06-26
  • 打赏
  • 举报
回复
是你vb.net?。asp的response对象没有setHeader方法。。是addheader
response.addHeader "Content-Disposition", "attachment; filename=""ExportExcel.xls"""
Go 旅城通票 2014-06-26
  • 打赏
  • 举报
回复
<% response.SetHeader "Content-Disposition", "attachment; filename=""ExportExcel.xls"""%>
文件名用"括起试试
zbdzjx 2014-06-26
  • 打赏
  • 举报
回复
引用 2 楼 jimil 的回复:
asp? 好久没搞了,建议清除多余的html标签再试,比如下面这些 <!DOCTYPE html PUBLIC "-//W3C//DTD html 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5" /> 只留下table就行了,你是用table吧?
是用的Table。 <% response.ContentType ="application/vnd.ms-excel" %> <% response.SetHeader "Content-Disposition", "attachment; filename=ExportExcel.xls"%> 我在网上查了一下,这两句代码在asp、jsp、asp.net上都可以用,但就是我的ASP程序不行,很奇怪。
jimil 2014-06-26
  • 打赏
  • 举报
回复
asp? 好久没搞了,建议清除多余的html标签再试,比如下面这些 <!DOCTYPE html PUBLIC "-//W3C//DTD html 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5" /> 只留下table就行了,你是用table吧?
zbdzjx 2014-06-26
  • 打赏
  • 举报
回复
顶!!!这么快就被挤到第二页了!!!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧