我的客户希望在他们的网站上获得他们的价目表。我试图使用电子表格(.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>
我将它安装在服务器上,没有任何影响 – Ortund 2011-04-12 10:09:54