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 =是。 我个人不喜欢。