Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 读取excel服务器端_Vb.net_Visual Studio 2008_Excel_Server Side Scripting - Fatal编程技术网

Vb.net 读取excel服务器端

Vb.net 读取excel服务器端,vb.net,visual-studio-2008,excel,server-side-scripting,Vb.net,Visual Studio 2008,Excel,Server Side Scripting,我需要开发一个服务,并将其安装到w2003框中,以读取excel文件,然后处理其信息。过程如下,用户将使用FTP上载excel文件,然后我的服务必须获取这些文件,验证并更新SQL Server数据库 应用程序在我的计算机上运行正常,但在服务器上它要求提供库,但当我尝试安装MS office 2003主互操作程序集时,系统显示“请在安装产品之前安装Microsoft office 2003” 我宁愿远离任何服务器升级,因为我们需要OKs等。。那么,有没有一种简单的方法可以直接读取excel文件,而

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

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

我宁愿远离任何服务器升级,因为我们需要OKs等。。那么,有没有一种简单的方法可以直接读取excel文件,而不必在服务器上安装任何更新

欢迎提出任何意见

谢谢, m0dest0


注:使用vb.net和vs 2008。

MS不支持在服务器上使用互操作-请参阅

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

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

我可以推荐和。。。没有尝试,但听到并阅读了很多关于它的好东西


免费选项(尽管仅适用于较新的xlsx格式!)例如和。

适用于在任何最新版本的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数据读取器(http://exceldatareader.codeplex.com/)当我需要处理Excel文件时。它可以轻松处理xls和xlsx文件,并且我已经在服务器操作系统上的一些应用程序中运行了它。它将每个工作表保存为DataTable对象,DataTable中的每个“单元格”对应于具有相同地址的Excel单元格。根据您设置SQL server链接的方式,将内容转储到数据库中可能不需要太多转换。

如果您使用excel对象库处理excel文件,我认为您需要在服务器计算机上安装excel。如果您允许用户上载文件,您是否仅将版本限制为Office 2003?如果用户安装了较新版本的Office怎么办?@Matt,这将是一个痛苦的安装过程。@zeroef,你是对的,我必须关注要支持的excel版本,我想知道下面提到的组件Flexcel是否能够处理任何版本。感谢+1对OpenXML的支持-要找到好的示例有点困难,但是一旦你设置了一些东西,你就可以用它做一些惊人的事情。@zeroef是真的,但是OP编写的Excel 2003意味着XLS不是XLSX,所以使用它取决于OP是否可以切换到更新的Excel格式。。。我提到的(商业)图书馆可以做这两件事,这就是为什么我把它们包括进去了……我一定是浏览了一下。好catch@Yahia,似乎我会评估Flexcel,非常感谢您的提示!!几年前我是一名delphi程序员,TSM是一家很好的公司。