请build议如何操作Excel电子表格而不使用Excel对象,因为Web服务器没有安装MS Office

我想知道在不使用Excel对象的情况下操作使用ASP.NET 2.0的Excel电子表格的选项,因为Web服务器没有安装MS Office。

我们在我们的应用程序中使用SpreadsheetGear出于同样的原因。 这是一个.Net库,可以读写/编辑Excel文件,而不需要在机器上安装Excel。 这是一个商业图书馆,所以你必须购买它 – 虽然你可以免费使用它,这意味着你只需要开发使用它的许可证,而不是每个部署。

您可以使用ADO读取和写入Excel。

strFile = "C:\Docs\TheFile.xls" Set cn = CreateObject("ADODB.Connection") With cn .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & strFile & "; ReadOnly=False;" .Open End With strSQL = "SELECT * FROM [Sheet4$]" Set rs = CreateObject("ADODB.Recordset") rs.Open strsql, cn, 2, 3 rs.Fields(1)="B" rs.Fields("Type")="E" rs.Update 

更多: http : //support.microsoft.com/kb/257819

编辑:我看到MSDASQL被微软弃用,所以这些是更好的连接string。

 scn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strFile & ";" & _ "Mode=ReadWrite;Extended Properties=""Excel 8.0;HDR=No""" cn.Open scn 

如果HDR设置为No,则可以使用从零开始的位置或从select范围的第一列开始计数的默认字段(列)名称F1,F2 … Fn覆盖现有标题。 如果HDR设置为是,则字段(列)名称是第一行。 无效的名称将被设置为默认名称。

模式是一个枚举,所以你可以有Mode=Share Deny None;Mode=Read|Share Deny Read|Share Deny Write; , 例如。

您可以select包含在连接string中:

 MaxScanRows=0; IMEX=0; Persist Security Info=False; 

设置MaxScanRows和IMEX只有在篡改registry时才有用。

IMEX的可能值是:

  0 is Export mode 1 is Import mode 2 is Linked mode (full update capabilities) 

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

您可以使用Open XML SDK来处理Office 2007文档

我不知道你是否有任何控制Excel文件,但如果你有你可以保存为XML文件。 这样,您可以使用XSLT / XPath来检索或转换Excelml中的数据

正如上面所说的3。 您只能使用Office 2007 Excel工作表执行此操作,因为这些工作表将XML数据存储在一个zip文件中。

对于较早的Excel版本,您需要第三方组件。

较新版本的Excel支持基于XML的电子表格文件,应该很容易操作。

微软最近发布了所有Office二进制文件格式的完整规范,但是实现这些规范完全可以满足您的需求。

您可以使用第三方转换工具将Excel文件转换为您舒适操作的格式(假定可以将其转换回Excel)。