【问题标题】:Unable to create excel file on clients machine in asp.net using c#?无法使用 c# 在 asp.net 中的客户端计算机上创建 excel 文件?
【发布时间】:2012-11-15 10:16:06
【问题描述】:

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

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

而创建excel文件的代码是:

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 localhost 中工作正常 .. 我在硬盘驱动器中获得了一个带有这些列标题的空 excel 文件....但是当我将它托管在服务器中并使其生效时,我无法创建excel文件...我收到一个错误:

Server Error in '/' Application.

The resource cannot be found.  

我该怎么办??我的错在哪里?请帮我解决这个问题

【问题讨论】:

  • 您的服务器上安装了 Excel 吗? (顺便说一句,以这种方式创建 Excel 文件是个坏主意,但那是另一回事......)
  • 我买了一个域名...所以我认为他们应该有 excel
  • 服务器上是否安装了 MS Excel?您可以询问他们的支持人员是否已安装。您是否允许将文件保存在您指定的文件夹中?
  • 你能举例说明如何创建一个excel文件吗?我只知道这个
  • @ArindamDas:你买了一个域,所以他们应该有 Excel?我没有看到联系。根据这个答案,我想我们可以得出结论,您的服务器上没有安装 Excel,因此您进行的 Excel 互操作调用只会失败。

标签: c# asp.net excel export-to-excel


【解决方案1】:

我在这里看到了几个问题。

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

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

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

【讨论】:

  • 好的,让我试试我认为可行的 gameboxsoftware 链接和另外 1 个 qus 先生 .. 我可以使用 .csv 文件而不是 excel 吗?这会对托管站点有任何依赖吗?
  • 如果您愿意,您可以使用 CSV,当然,这与托管服务提供商无关。重要的是如何生成输出。如果您只使用普通的 ASP.NET 创建 CSV,并且这足以满足您的目的,那么它可能是最简单的最佳解决方案。
【解决方案2】:

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

如果你想允许浏览器客户端下载文件,你需要将它直接写入响应流,例如。查看此线程中排名最高的答案以了解更多信息

ASP.NET Excel file download on button click

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多