.net 有没有一种方法可以通过编程连接excel文件?
场景:我们有一个web系统,它可以“动态”自动生成office 2003 excel文件(使用2003 XML文件格式,而不是二进制格式)。这些文件会保存在web服务器上,用于各种用途 现在,我们遇到了这样一种情况,客户希望我们将这个过程生成的xls文件粘在一起,形成一个大文件的一张纸。(主要是为了让他们只能按一次“打印”。) 我假设.net框架一定有办法做到这一点(以及类似的事情),但我似乎无法从MSDN中挑出我需要的东西.net 有没有一种方法可以通过编程连接excel文件?,.net,excel,automation,.net,Excel,Automation,场景:我们有一个web系统,它可以“动态”自动生成office 2003 excel文件(使用2003 XML文件格式,而不是二进制格式)。这些文件会保存在web服务器上,用于各种用途 现在,我们遇到了这样一种情况,客户希望我们将这个过程生成的xls文件粘在一起,形成一个大文件的一张纸。(主要是为了让他们只能按一次“打印”。) 我假设.net框架一定有办法做到这一点(以及类似的事情),但我似乎无法从MSDN中挑出我需要的东西 对于记录:.net 2.0,使用VB.net和ASP.net。如果需要
对于记录:.net 2.0,使用VB.net和ASP.net。如果需要,可以在服务器上安装Excel,但是在每次web用户点击时在后台打开Excel的东西可能无法很好地扩展。;) 那么您的用户是否希望附加每次生成的最新文件?或者只是在他们提出请求时把他们粘在一起 编辑: excel文件中有什么类型的数据?是否可以临时转换为更简单的格式,如csv 即使不能,也可以创建一个新文件,在循环遍历每个文件中的每一行时,可以将其写入新文件。这里的问题是,如果单元格中有任何函数,这些函数将丢失,因为您基本上只是复制数据
除此之外,您还必须使用Excel互操作。虽然我知道这很痛苦,而且自动化实际上不支持MS,但我们已经成功地创建了一个非常可靠的自动化系统,作为一个web服务。我不知道Excel文件由什么组成,但是否有可能至少从一个更简单的格式开始我可以读取?即,从CSV文件开始,将它们连接在一起,然后将其转换为Excel格式
在我看来,在转换过程中尽可能晚地转换为Excel格式会更容易。非常确定.Net framework没有您想要的格式,您必须手动创建它。您可以通过Excel互操作来执行此操作: 来自MSDN 编辑:为了让您有一些期待,使用它可能会很痛苦!:X1)打开每个XML文件。
2) 抓取每个工作表的工作表XML。
3) 将所有工作表XML插入新的“包装器”Excel 2003 XML文档。
4) 从web请求返回文档 确保工作表具有唯一的名称
我会避免使用2007 XML格式,因为您使用的是更易于处理的2003格式。也许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
进一步资料:
编辑并重新评论
这套衣服好吗?它来自:
您还可以将Jet驱动程序与Excel一起使用
编辑重新评论#2
我已经用.Net测试了这个连接字符串,它似乎可以工作:
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Docs\Test.xls;" & _
"Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No"""
XML格式为2007(但在使用2007兼容包后,您可以在2003年打开XML文件)。事实上,2003年有自己的XML格式。相信我,这让任何人都感到惊讶。这不是答案,但我很好奇为什么excel文件首先被创建?如果它只是一个用户在线查看或打印的报告,为什么不使用HTML?好吧……简短的回答是,用户下载并实际在ex中编辑它们cel-有时。而且,这一过程是几年前编写的,当时他们认为一次只需要一个文件/页。现在他们正在寻找一种方法,一次打印/下载20页。本质上,当另一个用户点击另一个按钮时,该过程会将目录中的所有xls文件连接到一个新文件中。这就是pr但是这些连接字符串在.net 2.0或excel 2003 xml文件下不起作用。有没有可能是ado.net版本?有时你看不到森林,而你看到的只是树木。
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Docs\Test.xls;" & _
"Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No"""