Excel另存为对话框不能正确显示

我已经使用ASP.NET和C#(后面的代码)开发了一个SharePoint WebPart。

其中一个需要做的事情是启动Excel另存为对话框,以便用户可以保存Excel文件。

在SharePoint服务器框上,此function正常工作。 当我点击“导出”,如预期一样,Excel“另存为”对话框出现。

但是,从客户端机器(如我的),此function无法正常工作。 当我点击“导出”时,Excel“另存为”对话框不会出现。

此对话框正在启动的代码片段…

xlApp.DisplayAlerts = false; //xlWorkBook.Save(); Microsoft.Office.Interop.Excel.Dialog dialog = xlApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogSaveAs]; dialog.Show(Type.Missing, // document_text Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, // type_num Type.Missing, // prot_pwd Type.Missing, // backup Type.Missing, // write_res_pwd Type.Missing, // read_only_rec Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); xlApp.DisplayAlerts = true; 

你知道有什么可能造成这种差异? 我应该调查一些特定的事情吗?

谢谢你的帮助,克里希纳

您必须明白,当您在Web服务器上使用上述代码时,您正在Web服务器上运行Excel,而不是在客户端计算机上运行。

你不能在你的客户/服务器环境下做你正在做的事情。 通常,您不应该在Web服务器上使用COM Interop / w Office组件。

您应该使用比Interop更安全的服务器来构buildExcel文件。 我过去曾经使用过XMLSS(我敢打赌,还有一种更为当前的Office XML格式):

http://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx

但是Excel甚至可以打开HTML表格,这取决于你想要做什么,你可以写HTML到客户端并给它一个.xls扩展名。

如果你不能避免使用Interop(尽pipe我强烈build议你避免它),那么你需要做的是确保你的Interop代码是线程安全和可靠的,并保存Excel文件到本地服务器,然后强制客户端浏览器“另存为”。 您还需要一段时间后清理旧文件的机制。 最好在记忆中完成,并将结果传送给客户。 以下链接包含有关如何强制“另存为”的信息。

http://www.west-wind.com/weblog/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET