在ASP.NET中的Web服务器上填写excel电子表格比interop更好的方法?

有没有更好的办法,我可以填写在Web服务器(使用asp.net)的电子表格比使用interop?

编辑:我不是很清楚,我需要什么:

我有一个模板,我必须使用由我们的客户提供的。 在模板中是一些密码保护,我没有访问,所以我不能生成Excel文件的macros。 我卡住更新2003年的Excel文件。

Office 2007文档(Word,PowerPoint和Excel)基于OpenXML格式。 他们只是一些XML和二进制文件(思考文件)里面的zip文件。 您可以使用Packaging API(WindowsBase.dll中的System.IO.Packaging)打开它们,并使用Framework中的任何XML类来操作它们。

查看OpenXMLDeveloper.org了解详细信息。

检查这个项目:

ExcelPackage:Office Open XML格式文件创build 。

创buildExcel 2007格式电子表格非常棒。

检查SpreadsheetGear 。 此组件将允许您操作Excel 2007电子表格,执行macros,并从ADO.Net更新电子表格。 它不需要在互操作服务器上安装Excel。

有网站有很好的示例代码,供您阅读。 我们在内部部署了一个应用程序,它运行的很好。

当然,你可以把电子表格作为一个简单的csv来更新它。 这在许多方面会更高效。 与办公室的互操作性可能很重,如果同时存在多个实例,则可能会遇到麻烦。

是。

如果您有一个现有的电子表格,并且想要根据用户input添加数据(每个用户共享一张工作表或者甚至一个用户定期更新自己的工作表),那么您的方法就会错误。 Excel无法处理Web情况下的并发或互操作性负载。 唯一需要互操作的地方是当您必须打开不在您控制范围内的现有电子表格时。

相反,保存用户input到一个真实的数据库,只需要生成一个Excel文档。 请参阅下面链接的问题,以获取帮助生成excel文档的信息:有几个不需要互操作的选项,包括html表格,xml,openxml csv或第三方组件,以及大多数支持格式,公式等。
在ASP.NET中生成Excel文件

更新
如果您需要执行macros,那么您可能需要使用excel interop。 但是,这在网站上是不行的 。 我build议你回顾客户,并要求他们对你的表单要求更加开放。

也许你可以把操作分成两部分。

  1. 从网站收集信息。

将结果存储在数据库中供以后使用。

  1. 更新Excel电子表格。

运行更新电子表格的过程。

如果网站不得不返回电子表格的结果,这将不起作用。

您可以使用Excel XML规范。

我已经在我的博客上演示了如何在C#3.0中执行此操作,并链接到了VB 9上的示例。它使用LINQ to XML。

这个概念可以很容易地修改为.NET 2.0。

http://www.aaron-powell.com/blog/september-2008/linq-to-xml-to-excel.aspx

这是我最终select的解决scheme。 我将我的模板保存为一个xls文件,每当我需要创build工作表时,我将其复制到一个目录并给它一个名称。 然后,我使用OleDb和UPDATE语句填写我需要添加我的数据的单元格。