我有一台带有SQL和IIS的2008R2服务器;没有安装MS-Office套装,但我需要根据用户请求发送动态创建的Excel回复。
安装了“Microsoft Access数据库引擎2010 Redistributable”,根据规范,Excel驱动程序(以及其他)应该就位。
尝试使用以下连接字符串创建新数据库:
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 .....
输出目录安全性允许无限制地创建。
如果我有一个'模板',我可以复制它并使用它。所以:不允许创建,但是读/写是。
请不要建议将CSV,第三方软件或其他任何形式的Excel工作簿与一个或多个工作表一起使用。
对不起我的语言:我精通C#,但更喜欢用VB编写......
答案 0 :(得分:0)
如果要创建一个空白的新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文件将不会完整...
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 =是。我个人不喜欢。