无法使用c#在asp.net客户机上创buildexcel文件?

我使用这个代码在客户端的机器上创build一个excel文件,同时按下asp.net中的button

protected void excldwnlbtn4_Click(object sender, EventArgs e) { write_on_excel("Vendor.xls"); lblmsg4.Text = "File Downloaded"; } 

而创buildexcel文件的代码是:

 public void write_on_excel(string filepath) { Excel.ApplicationClass excelApp = new Excel.ApplicationClass(); try { Excel.Workbook workbook = (Excel.Workbook)excelApp.Workbooks.Add(Missing.Value); Excel.Worksheet worksheet; //// Opening excel file //workbook = excelApp.Workbooks.Open(filepath, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); workbook.SaveAs(filepath, Excel.XlFileFormat.xlExcel5, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); // Get first Worksheet worksheet = (Excel.Worksheet)workbook.Sheets.get_Item(1); // Setting cell values ((Excel.Range)worksheet.Cells[1, "A"]).Value2 = "Vendor Code"; ((Excel.Range)worksheet.Cells[1, "B"]).Value2 = "Vendor Password"; ((Excel.Range)worksheet.Cells[1, "C"]).Value2 = "Vendor Name"; workbook.Save(); workbook.Close(0, 0, 0); } catch (Exception) { lblmsg4.Text = "File not Downloaded!!"; } finally { excelApp.Quit(); } } 

现在它在我的IIS本地主机工作正常..我得到一个空的excel文件与我的硬盘驱动器中的列标题….但是,当我托pipe它在服务器上,使其生活,然后我无法创buildExcel文件…我得到一个错误:

 Server Error in '/' Application. The resource cannot be found. 

我该怎么办?? 我的错在哪里? 请帮助我

我在这里看到几个问题。

一个是,你期待Excel出现在服务器上。 如果你不确定它是否在那里,它可能不是,你的应用程序应该检查它。 基本上,如果在尝试实例化Excel对象时遇到exception,则Excel不存在,或者您没有执行权限。

其次是在服务器本地保存输出文件(如果可以的话)。 这不会神奇地将文件发送到客户端。 你必须自己发送文件; 最好不要在服务器上创build本地副本,而是让你的ASP.NET页面将Excel文件输出到一个stream中; 客户端接收stream。 请参阅这里获取更多信息: http : //www.gemboxsoftware.com/support/articles/asp-net-excel

最后,还有其他方法可以生成Excel文件。 您可以使用OpenXML之类的库(请参阅http://openxmldeveloper.org/ ),也可以使用内置的System.Xml类生成Excel可以读取的XML文件。 也有商业上可用的库,用于处理.NET中的Excel文件,如Aspose单元(请参阅http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default。 aspx )。

这绝不会在浏览器客户端的机器上创build文件(除非该机器是破坏Web服务器的机器)。

例如,如果您希望允许浏览器客户端下载文件,则需要将其直接写入响应stream。 看看这个线程的最高排名的答案更多

ASP.NETbutton点击下载Excel文件