请问:导出Excel后不能弹出保存对话框

goodsun2 2008-07-16 01:09:25
string filepath = Server.MapPath("../excel/");
string filename = "BUG管理.xls";
string savefilename = getfilename(filename);
Excel.Application app = new Excel.Application();
Excel.WorkbookClass book;
book = (Excel.WorkbookClass)app.Workbooks.Open(filepath + filename);
Excel.Worksheet worksheet4 = (Excel.Worksheet)book.Worksheets[4];//声明sheet页对象
。。。。。
//保存文件到此路径
book.SaveCopyAs(filepath + savefilename);
book.Saved = true;
book.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
app.Quit();
//打开文件
Response.Redirect("../excel/" + savefilename);


使用以上代码导出excel,本来会弹出一个"保存"对话框。但是我把"保存"对话框下的一个选项前的勾去掉了(忘了是什么),然后再导出excel时"保存"对话框
就不会弹出来了,而是直接在IE中打开导出的Excel,请问如何才能再弹出"保存"对话框??
...全文
314 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
suyiming 2008-07-16
  • 打赏
  • 举报
回复
string filepath = Server.MapPath("../excel/");
string filename = "BUG管理.xls";
string savefilename = getfilename(filename);
Excel.Application app = new Excel.Application();
Excel.WorkbookClass book;
book = (Excel.WorkbookClass)app.Workbooks.Open(filepath + filename);
Excel.Worksheet worksheet4 = (Excel.Worksheet)book.Worksheets[4];//声明sheet页对象
。。。。。
//保存文件到此路径
book.SaveCopyAs(filepath + savefilename);
book.Saved = true;
book.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
app.Quit();
//打开文件
Response.Redirect("../excel/" + savefilename);
Response.End();
mandula2007 2008-07-16
  • 打赏
  • 举报
回复
试试这个

book.SaveCopyAs(Server.MapPath(".") + "\\filename.xls");//保存Excel文件
book.Close(false,null,null);
book.Quit();
GC.Collect();

System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(".") + "\\filename.xls");
Response.Clear();
Response.Buffer= true;
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode(file.Name));
Response.AddHeader("Content-Length",file.Length.ToString());
Response.ContentType = "application/ms-excel";
Response.WriteFile(file.FullName);
Response.End();
贡献给热爱学习的人 (示例中含有详细的代码及说明) 1、生成默认的基本对话框工程,工程名为ProjectX。 2、添加FlexGrid1控件:Ctrl+W打开类向导,工程->增加到工程->Components and Contols->Registered ActiveX Controls->Microsoft FlexGrid Control ,version6.0 ->Insert 3、为IDC_DATAGRID1关联变量m_FlexGrid1 4、Ctrl+W打开类向导,新建一个类,选择从Type Library添加。如果是Office 2003,添加的是Office安装路径下的Excel.exe (在Office 2000环境下添加的应该是Excel9.OLB) 。在弹出的Confirm Classes里选择_Application,Workbooks,_Workbook,Worksheets ,_Worksheet,Range ,Font 这几个类,并确定新生成的.CPP和.h文件的名称为Excel.cpp和Excel.h,然后确定。 5、添加类CColorButton:Ctrl+W打开类向导->点击Member Variables->Add Class->new->name:CColorButton Base Class:CButton->Ok 6、添加类CColorButton的成员函数DrawIten和PreSubclssWindow 7、添加ColorButton.h和ColorButton.cpp的实现代码 8、"导出Excel"按钮关联类型为CColorButton的变量(Vaiable Type:CColorButton):m_btn1 9、右键点击ProjectX resources->引入:文件类型选择所有文件,依次引入5个按钮位图,程序将自动添加5个位图资源,然后设置位图资源的属性。 10、在stdafx.h中添加导入ADO库 11、在ProjectXDlg.h中添加智能指针变量等。 12、在ProjectXDlg.cpp中添加头文件引用:#include "Excel.h" 13、在ProjectXDlg.cpp的OnInitDialog()中添加初始化代码等。 14、双击导出Excel按钮,添加单击响应函数及功能代码。
以前用Excel2003做了些宏,在网上还有不少粉丝,因一些功能在Excel2010中无法使用,故重新整理,欢迎指正; 本Excel中的宏在Excel2010中测试表现出色; 运行宏前,要保证EXCEL没有禁用宏。 Michael Ho QQ: 9900060 ----------------------- 本Excel有以下功能: 插入图片1 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.宏会自动复制Sheet2到新工作簿,并插入你所选文件夹中的全部JPG图片到B列,对应的图片名自动填到C列; 3.图片的大小会自动适应Sheet2的B3单元格,因此可以在点击执行前调整Sheet2的B3单元格的大小来控制插入图片的大小。 -------- 插入图片2 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.宏会自动复制Sheet3到新工作簿,并插入你所选文件夹中的全部JPG图片制作图册,对应的图片名自动填到图片下方; -------- 插入图片3 如果用户自己的Excel文件中有一列是型号,该宏可以插入指定文件夹里以型号命名的JPG图片到另一列; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+I (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏InsertPic3); 4.然后会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 5.在弹出对话框中指定型号在第几列,图片要插入到第几列,以及从哪一行开始; 6.图片的大小会自动适应你设定的第一行要插入图片的单元格,因此提前调整那个单元格的大小可以控制插入图片的大小。 ------------- 删除活动工作表中所有图片 Ctrl+d 删除活动工作表里所有的JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+d (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏DelPic); ------------- 导出活动工作表中被选中的一张JPG图片 Ctrl+e 导出活动工作表中被选中的一张JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.请选中一张要导出的图片; 4.在你的文件中按Ctrl+e (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏OutputOnePic); 5.在弹出对话框中指定图片要保存的名字; 1.不管图片在Excel中是否被缩放过,导出的图片是按图片的原始尺寸进行保存。 2.在桌面上会自动新建一个"OutputPic"的文件夹,导出的图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ------------- 导出活动工作表中所有JPG图片 Ctrl+f 导出活动工作表中所有JPG图片,并且图片名自动使用指定列中的图片名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+f (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏OutputAllPic); 4.在弹出对话框中指定图片所在列,图片名所在的列; 1.不管图片在Excel中是否被缩放过,导出的图片是按图片的原始尺寸进行保存; 2.在桌面上会自动新建一个"OutputPic"的文件夹,所有导出的图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ---------------- 对指定文件夹中的JPG图片进行重命名 Ctrl+r 利用活动工作表中的所有图片的旧名与新名的对照,对指定文件夹中JPG图片进行重命名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+r (或在你的文件中手动执行宏,然后选择本EXCEL文件中的宏RenamePic); 4.在弹出对话框中指定图片旧名所在列和图片新名所在的列; 1.可以结合插入图片的宏,将所有图片的旧名输入到Excel中,再在另一列中填上新图片名,然后使用该宏。 2.如果顺利运行,会在原来那个文件夹下面新建一个叫“New”的子文件夹,所有重命好名的图片会自动放入子文件夹里; 3.如果文件夹中已有相同名字的文件,则后面的文件会覆盖原来的文件。

61,819

社区成员

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

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

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

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