有没有办法编程连接Excel文件?

场景:我们有一个networking系统,可以“随时”自动生成office 2003 excel文件(使用2003 XML文件格式,而不是二进制格式)。这些文件确实保存在Web服务器上,用于各种事情。

现在,我们处于这样一种情况:客户端真的希望我们把这个进程生成的xls文件粘贴到一个大文件中。 (主要是让他们只能按“打印”一次。)

我假设.net框架必须有一些方法来做到这一点(和这样的事情),但我似乎无法挑逗我需要的MSDN。

logging:.net 2.0,使用VB.net和ASP.net。 如果需要的话,可以在服务器上安装Excel,但是在每个Web用户点击的背景中打开excel的东西可能无法很好地扩展。 ;)

也许ADO会适合? 这是一个脚本示例。

strXLToOpen = "C:\Docs\ltd.xls" strXLToImport = "C:\Docs\ltd2.xls" Set cn = CreateObject("ADODB.Connection") ''EDIT I not that MSDASQL is deprecated by Microsoft, so ''Please see below. With cn .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & strXLToOpen & "; ReadOnly=False;" .Open End With strSQL = "INSERT INTO [Sheet2$] (H1, H2) " _ & "SELECT H1, H2 FROM [Sheet2$] IN '' " _ & "'Excel 8.0;database=" & strXLToImport & "';" cn.Execute strSQL 

更多信息: http : //support.microsoft.com/kb/257819/EN-US/

http://support.microsoft.com/kb/278973

编辑重新评论。

这会适合吗? 它来自: http : //www.codemaker.co.uk/it/tips/ado_conn.htm#ODBCDriverForExcel

 cn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _ "DriverId=790;" & _ "DBQ=" & strXLToOpen & "; ReadOnly=False;" & _ "DefaultDir=c:\somepath" 

您也可以使用Jet驱动程序与Excel。

编辑重新评论#2

我用.Nettesting了这个连接string,它似乎工作:

 "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Docs\Test.xls;" & _ "Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No""" 

我不知道Excel文件是由什么组成的,但是至less可以用Excel可以读取的更简单的格式来开始吗? IE,从一个CSV文件开始,将它们连接在一起,然后将其转换为Excel格式。

在我看来,在这个过程中尽可能晚地转换为Excel格式会更容易。

很确定.net框架没有你正在寻找的东西,你将不得不手动创build它。 你可以通过Excel interop来做到这一点:

来自MSDN的Microsoft.Office.Interop.Excel

编辑:只要你有一些期待,这可能是一个痛苦的工作! :X

1)打开每个XML文件。
2)为每个工作表抓取工作表XML。
3)将所有的工作表XML插入一个新的“包装”Excel 2003 XML文档。
4)从Web请求中传回文档。

确保工作表具有唯一的名称。

我会避免2007 XML格式,因为你正在处理更容易处理2003格式。

所以你的用户想追加每次生成的最新文件? 或者只是在提出请求时将它们粘合在一起?

编辑:

什么样的数据在Excel文件中? 它可以暂时转换为一个简单的格式,如csv?

即使你不能,你也可以创build一个新文件,当你循环遍历每个文件中的每一行时,你都可以把它写入新文件。 这里的问题是,如果在单元中有任何function,那么基本上只会复制数据,这些function将会丢失。

除此之外,你将不得不使用Excel Interop。 虽然我知道这是一个痛苦,但实际上并不支持自动化的MS,我们已经成功地创build了非常可靠的自动化系统作为Web服务。