我正在使用Excel Interop名称空间来修改Excel工作簿连接中的连接字符串。为什么设置OLEDBConnection.Connection抛出异常(HRESULT:0x800A03EC)?
为什么当我试图将连接属性(MSDN OLEDBConnection.Connection)抛出的分配线的错误?从HRESULT
例外:0x800A03EC
application = new Application();
Workbook wb = application.Workbooks.Open(file.FullName);
Sheets wbs = wb.Worksheets;
IEnumerable<Workbook> workbooks = application.Workbooks.Cast<Workbook>();
foreach (var connection in wb.Connections.Cast<WorkbookConnection>()
.Where(c => c.Type == XlConnectionType.xlConnectionTypeOLEDB))
{
connection.OLEDBConnection.Connection = "Test Connection String";
}
application.Quit();
但是,调用替换方法如下所示正在工作。我发现这是解决方法,不确定为什么Replace在这种情况下工作。
application = new Application();
Workbook wb = application.Workbooks.Open(file.FullName);
Sheets wbs = wb.Worksheets;
IEnumerable<Workbook> workbooks = application.Workbooks.Cast<Workbook>();
foreach (var connection in wb.Connections.Cast<WorkbookConnection>()
.Where(c => c.Type == XlConnectionType.xlConnectionTypeOLEDB))
{
var conString = connection.OLEDBConnection.Connection.ToString();
connection.OLEDBConnection.Connection =
conString.Replace("Test Connection String", "New Test Connection String");
}
application.Quit();
这其实是我能得到的连接字符串改变的唯一途径,因此要求背后是什么,为什么一套可能引发错误的原因。
因为''测试连接字符串“!= conString.Replace(”测试连接字符串“,”新测试连接字符串“)? – Slai
谢谢,让我停下来,重新从头开始访问。很快会发布答案。尽管会使用OpenXML。 –