2011-10-18 127 views
1

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

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

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

欢迎任何评论。

谢谢, m0dest0。

ps。用vb.net和VS 2008

+0

我认为如果您使用Excel对象库来操作Excel文件,您将需要在服务器计算机上安装excel。 –

+1

如果您允许用户上传文件,您是否将版本限制为仅限Office 2003?如果用户安装了更新版本的Office,该怎么办? – zeroef

+0

@Matt,这将是一个痛苦的安装过程。 – m0dest0

回答

2

在服务器上使用互操作不被微软支持 - 看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

+0

+1 for OpenXML - 在这里找到优秀的例子有点困难,但是一旦你设置了一些东西,你就可以用它做出惊人的事情。 – zeroef

+0

@zeroef是真的,但OP写了Excel 2003,这意味着XLS不是XLSX,所以使用它取决于OP是否可以切换到更新的Excel格式...我提到的(商业)库可以做到这两个, ... – Yahia

+0

我一定瞥了一眼。好赶上 – zeroef

0

对于没有任何安装在任何最新版本的Windows Server上的解决方案.....我不确定确切的VB.NET代码,但您应该可以轻松地在任何使用Microsoft的计算机上执行此操作OLEDB驱动程序应该可以在任何最新版本的Windows服务器上使用,或者可以从微软网站免费下载,以便安装非常旧版本的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 
0

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