1

我需要开发一项服务并将其安装到 w2003 框中以读取 excel 文件,然后处理其信息。该过程如下,用户将使用 FTP 上传 excel 文件,然后我的服务必须获取这些文件,验证然后更新 SQL Server DB。

该应用程序在我的计算机上运行良好,但在服务器上它要求提供库,但是当我尝试安装 MS Office 2003 主互操作组件时,系统显示“请在安装产品之前安装 Microsoft Office 2003”。

我宁愿远离任何服务器升级,因为我们应该需要 OK 等。所以,有没有一种简单的方法来读取 excel 文件而无需在服务器中安装任何更新。

欢迎任何意见。

谢谢,m0dest0。

附言。使用 vb.net 和 vs 2008。

4

3 回答 3

2

MS 不支持在服务器上使用互操作 - 请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

由于 Windows Vista MS 引入了一些与安全相关的措施,这些措施阻止了 Windows 服务做“类似桌面”的事情......这意味着你必须绕过几个安全措施才能让它工作(不推荐!)。

要在服务器方案中处理 Excel,有几个选项(免费和商业):

我可以推荐Aspose.CellsFlexcel ......没有尝试SpreadsheetGear但听到+阅读了很多关于它的好东西......

免费选项(尽管仅适用于较新的 xlsx 格式!)例如 来自 MSEPPlus的 OpenXML 2 。

于 2011-10-18T16:35:15.137 回答
0

对于在任何最新版本的 Windows Server 上无需安装的解决方案.....我不确定确切的 VB.NET 代码,但您应该可以轻松地在任何使用 Microsoft OLEDB 驱动程序的机器上执行此操作可以在任何最新版本的 windows server 上使用,也可以从 Microsoft 网站上免费下载非常旧的 windows server 版本。我将尝试对此进行伪代码,因此您必须针对 VB.NET 对其进行调整。请注意,为了按名称引用您的字段,工作表中所选区域的第一行必须包含列值中的字段名称。否则,您只需使用数值按列位置索引每个返回的字段。

Set objExcelConnection = CreateObject("ADODB.Connection")
objExcelConnection.Provider = "Microsoft.Jet.OLEDB.4.0"
objExcelConnection.ConnectionString = "Data Source=d:\path\to\excel\file\on\your\server.xls;Extended Properties=""Excel 8.0;IMEX=1;"";"
objExcelConnection.CursorLocation = 3
objExcelConnection.Open


sSQL = "select * from [worksheetname$]"
set rsWorksheet = objExcelConnection.Execute(sSQL)
do while not rsWorksheet.Eof
    sValue = rsWorksheet("FieldName")
    rsWorksheet.MoveNext
loop
rsWorksheet.Close

set objExcelConnection = nothing
于 2011-10-18T16:48:04.040 回答
0

当我需要处理 Excel 文件时,我使用 Excel 数据阅读器 (http://exceldatareader.codeplex.com/)。它可以毫不费力地处理 xls 和 xlsx 文件,而且我已经让它在服务器操作系统上的一些应用程序中运行。它将每张工作表保存为一个DataTable对象,DataTable中的每个“单元格”对应同一个地址的Excel单元格。根据您设置 SQL 服务器链接的方式,将内容转储到数据库中可能不需要太多转换。

于 2011-10-18T19:10:42.747 回答