Oledb或ODBC创build没有安装Office的工作簿或工作表

我有一个2008R2服务器与SQL和IIS; 没有安装MS-Office套装,但是我需要根据用户请求发送dynamic创build的Excel回复。

安装“Microsoft Access数据库引擎2010可再发行组件”,根据规范,Excel驱动程序(等)应该到位。

试图用下面的连接string创build一个新的数据库:

Using ExcelConnection As New System.Data.OleDb.OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Name + ";" + "Mode=ReadWrite;" + "ReadOnly=false;" + "Extended Properties=Excel 12.0;") ExcelConnection.Open() .... end Using 

错误

  [OleDbException (0x80004005): Could not find installable ISAM.] System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +318 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +88 System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +24 .... 

删除Mode=ReadWrite;ReadOnly=false; 以不同的错误失败:

 OleDbException (0x80004005): Cannot update. Database or object is read-only.] System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +318 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions ..... 

输出目录安全性允许创build没有限制。

如果我有一个“模板”,我可以复制它并使用它。 所以:创build是不允许的,但读/写是。

请不要build议使用CSV,第三方软件或其他任何forms良好的Excel工作簿以及一个或多个工作表。

对不起我的语言:我很stream利的C#,但更喜欢用VB编写…

如果要创build一个空白的新Excel文件,则需要在扩展属性中指定“Excel 12.0 XML”,例如

 Using ExcelConnection As New System.Data.OleDb.OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Name + ";" + "Extended Properties=Excel 12.0 XML;") ExcelConnection.Open() End Using 

此外,请注意,Excel文件将不会完成,直到您添加至less一个工作表…

 Using ExcelCommand As New System.Data.OleDb.OleDbCommand("Create Table [Sheet1] (Column1 Int)", ExcelConnection) ExcelCommand.ExecuteNonQuery() End Using 

不过,读取现有的模板后,可能在您从别处复制模板之后,将需要使用不同的扩展属性…

 Using ExcelConnection As New System.Data.OleDb.OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Name + ";" + "Extended Properties=""Excel 12.0;HDR=No;IMEX=1""" ExcelConnection.Open() End Using 

在这种情况下,您可能有标题指定HDR =是。 我个人不喜欢。