-3

我正在编写一个具有导出到 Excel 功能的简单应用程序。这是我的代码。

using  Microsoft.Office.Interop.Excel;
.....
....
...

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
            app.Visible = true;
            app.Workbooks.Add();

            Microsoft.Office.Interop.Excel._Worksheet worksht = app.ActiveSheet;

            worksht.Cells[1, "A"] = "Col1";
            worksht.Cells[1, "B"] = "Col2;
            worksht.Cells[1, "C"] = "Col3";

            int row = 1;
            lstUsers= GetUsers();

            foreach (Users usr in lstUsers)
            {
                row++;
                worksht.Cells[row, "A"] = usr.Col1;
                worksht.Cells[row, "B"] = usr.Col2;
                worksht.Cells[row, "C"] = usr.Col3;
            }

            worksht.SaveAs("Test.xls");

此代码在我的本地机器中运行良好,但在开发服务器中运行良好。我的本地盒子有微软办公室,开发服务器没有微软办公室。

我尝试在 GAC 中注册 Microsoft.Office.Interop.Excel.dll。但它没有用。任何想法?

开发服务器软件详细信息:Windows 2003/IIS 6/.Net 4.0

4

2 回答 2

1

MS 在服务器场景(如 IIS)中不支持互操作

AFAIK 没有任何库来实现你在服务器场景中想要的东西是没有选择的!

有许多选项可以读取/编辑/创建 Excel 文件,而无需在服务器上进行互操作/安装 Excel:

我在评论中读到第 3 方库违反公司政策,但我认为由于 OpenXML 库来自 MS 本身并且免费,因此它可能是一种选择

MS 提供免费的 OpenXML SDK V 2.0 - 请参阅http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx(仅限 XLSX)

这可以读写 MS Office 文件(包括 Excel)。

其他选项是如果您从公司政策中获得例外和/或其他人来寻找类似问题的解决方案

另一个免费选项参见http://www.codeproject.com/KB/office/OpenXML.aspx(仅限 XLSX)

如果您需要更多处理旧 Excel 版本(如 XLS,不仅是 XLSX)、渲染、创建 PDF、公式等,那么有不同的免费和商业库,如ClosedXML(免费,仅限 XLSX)、EPPlus(免费,仅限 XLSX) , Aspose.Cells , SpreadsheetGear , LibXLFlexcel等。

于 2013-08-08T20:10:35.277 回答
0

好的,伙计们,我找到了执行相同功能的替代方法,不需要任何服务器端组件。这是代码。

Response.ClearContent();
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("Content-Disposition", "attachment;filename=UserList.xls");

        DataGrid grid = new DataGrid();
        grid.DataSource = <<DataList>>;
        grid.DataBind();

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        grid.RenderControl(htw);
        Response.Write(htw.InnerWriter);

        Response.End();

它允许导出到 XLS 或 XLSX 取决于您的需要。

于 2013-08-08T21:14:03.110 回答