Я работаю с пространством имен Excel Interop, чтобы изменить строку соединения в подключениях рабочей книги Excel.Зачем устанавливать OLEDBConnection.Connection throws Exception (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();
Это на самом деле это единственный способ, которым я мог бы получить строку соединения изменилось, поэтому спрашивать, что является причиной, почему набор может быть бросать ошибку.
потому что '' Test Connection String "! = ConString.Replace (" Test Connection String "," New Test Connection String ")'? – Slai
Спасибо, заставил меня остановиться и снова посетить это с нуля. В ближайшее время опубликует ответ. Однако будет использовать OpenXML. –