2011-04-11 66 views
0

我的客户希望在他们的网站上获得他们的价目表。我试图使用电子表格(.xlsx)作为数据源,以便在数据出现在网站上之前限制数据的处理。vb web应用程序中的电子表格连接

该网站在IIS 7上运行。服务器是Windows Server 2008.我已将.NET Framework更新到4.0。

它没有安装任何Office软件包,我的预感是我的问题所在,但我真的很想确定。

继承人的错误文本我越来越:

System.InvalidOperationException: The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at Products.Page_Load(Object sender, EventArgs e) in C:\HostingSpaces\webbuddies\waterinc.webbuddies.co.za\wwwroot\Products.aspx.vb:line 14

继承人我的代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
' Here's the connection string as defined in web.config: 
' <connectionStrings> 
'  <add name="xlsx" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=App_Data/Pricelist.xlsx;Extended Properties=Excel 8.0;" /> 
' </connectionStrings> 
    Dim con As New OleDbConnection(ConfigurationManager.ConnectionStrings("xlsx").ConnectionString) 

    ' The spreadsheet has 4 sheets in it, 1 for each category on the client's pricelist. 
    Try 
     con.Open() 

     Dim dsWater As DataSet 
     Dim daWater As New OleDbDataAdapter 
     daWater.SelectCommand = New OleDbCommand("SELECT * FROM Water", con) 

     Dim dsJuice As DataSet 
     Dim daJuice As New OleDbDataAdapter 
     daJuice.SelectCommand = New OleDbCommand("SELECT * FROM FruitJiuce", con) 

     Dim dsMix As DataSet 
     Dim daMix As New OleDbDataAdapter 
     daMix.SelectCommand = New OleDbCommand("SELECT * FROM MuffinMix", con) 

     Dim dsMisc As DataSet 
     Dim daMisc As New OleDbDataAdapter 
     daMisc.SelectCommand = New OleDbCommand("SELECT * FROM Miscellaneous", con) 

     daWater.Fill(dsWater, "Water") 
     daJuice.Fill(dsJuice, "FruitJuice") 
     daMix.Fill(dsMix, "MuffinMix") 
     daMisc.Fill(dsMisc, "Miscellaneous") 

     rptWater.DataSource = dsWater : rptWater.DataBind() 
     rptJuices.DataSource = dsJuice : rptJuices.DataBind() 
     rptMixes.DataSource = dsMix : rptMixes.DataBind() 
     rptMisc.DataSource = dsMisc : rptJuices.DataBind() 

     con.Close() 
    Catch ex As Exception 
     errorMessage = ex.ToString 
     lblResponse.Text = "Could not connect to one or more data sources required to display the " & _ 
      "pricelist. Please contact the webmaster." & vbCrLf & errorMessage 
     lblResponse.ForeColor = Drawing.Color.Red 
    End Try 
End Sub 

编辑1
发布以来我已经安装了2007年办公室驾驶员在服务器从第一个答案中的链接,我已经修改了我的连接字符串按照第二个答案:

<connectionStrings> 
    <add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0; Data Source=App_Data/Pricelist.xlsx; Extended Properties=Excel 12.0 Xml; HDR=YES;"/> 
</connectionStrings> 

回答

0

对于XLSX文件,您需要像这样修改连接字符串。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 

更多信息 - http://connectionstrings.com/excel-2007

+0

我开始了'供应商= Microsoft.ACE.OLEDB.21.0;'但现在因为我打字这一点,我没有在服务器上安装了2007年办公室司机发生在我在当时... – Ortund 2011-04-12 10:10:59

+0

您正在使用哪个版本的Excel 2003/2007/2010?我认为2007年是Microsoft.ACE.OLEDB.12.0,2010年是Microsoft.ACE.OLEDB.14.0。 – Anuraj 2011-04-12 10:21:20

+0

使用Office 207 Pro – Ortund 2011-04-13 11:28:29

相关问题