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

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

我宁愿远离任何服务器升级,因为我们需要OKS等。因此,是否有一种简单的方法可以读取Excel文件而无需在服务器中安装任何更新。

欢迎任何评论。

谢谢,m0dest0。

PS。使用VB.NET和VS 2008。

有帮助吗?

解决方案

MS不支持服务器上的Interop - 请参阅 http://support.microsoft.com/default.aspx?scid = kb;en-us;q257757#kb2

由于Windows Vista MS引入了几项与安全有关的措施,这些措施阻止Windows服务执行“桌面状”的操作……这意味着您必须规避几项安全措施才能使其工作(不建议使用!)。

要在服务器 - 塞纳里奥(Server-Scenario)中处理Excel,那里有几种选项(免费和商业):

我可以推荐 aspose.cells弹性...没有尝试 电子表格柜 但是听到+阅读了很多关于它的好东西...

免费选项(尽管仅适用于较新的XLSX格式!) MS的OpenXML 2epplus.

其他提示

对于在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

当我需要处理Excel文件时,我使用Excel数据读取器(http://exceldatareader.codeplex.com/)。它无需挂接就可以处理XLS和XLSX文件,并且在服务器OS上的一些应用程序中运行它。它将每个表作为数据表对象保存,并且数据表中的每个“单元格”对应于带有相同地址的Excel单元。根据您设置SQL Server链接的方式,可能不需要太多的转换即可将内容倒入数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top