阅读excel服务器端

时间:2011-10-18 16:27:19

标签: vb.net visual-studio-2008 excel server-side-scripting

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

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

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

欢迎任何评论。

谢谢, m0dest0。

PS。使用vb.net和vs 2008。

3 个答案:

答案 0 :(得分:2)

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

由于Windows Vista MS引入了一些与安全相关的措施,这些措施阻止Windows服务执行“类似桌面”的操作......这意味着您必须绕过一些安全措施才能使其工作(不推荐!)。

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

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

免费选项(仅适用于较新的xlsx格式!)例如OpenXML 2 from MSEPPlus

答案 1 :(得分:0)

对于在任何最新版本的Windows Server上都没有安装的解决方案.....我不确定确切的VB.NET代码,但您应该能够轻松地在任何使用Microsoft OLEDB的计算机上执行此操作应该可以在任何最新版本的Windows服务器上使用的驱动程序,或者可以通过Microsoft网站免费下载用于非常旧版本的Windows服务器的驱动程序。我会尝试伪代码,所以你必须适应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

答案 2 :(得分:0)

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