我正在使用C#將帶有數據透視表和圖表的Excel電子表格加載到Web瀏覽器控件中。電子表格有幾個連接字符串都指向開發數據庫。我希望能夠將連接字符串更改爲在我的應用程序運行時由用戶提供的連接字符串。在C中更改Excel電子表格的PivotCache連接#
當電子表格是以編程方式創建的,並且樞軸緩存的SourceType設置爲'External'時,我已經設法使其工作。但是,當加載在Excel中創建的電子表格時,源類型設置爲'數據庫',並在訪問'連接'屬性時拋出異常。
有沒有辦法改變這種電子表格的SourceType(只讀)屬性或連接字符串?
這是我的代碼示例,它基於a solution to a similar problem。
EXCEL.Worksheet sheet = (EXCEL.Worksheet)_application.ActiveSheet;
foreach (EXCEL.PivotTable table in sheet.PivotTables())
{
table.PivotCache().Connection = ConnectionString;
table.RefreshTable();
}
我還當我訪問樞軸緩存連接財產試過這種
var workBooks = _application.Workbooks.Cast<EXCEL.Workbook>();
var pivotCaches = workBooks.SelectMany(arg => GetPivotCaches(arg));
foreach (EXCEL.PivotCache cache in pivotCaches)
{
cache.Connection = ConnectionString;
}
在這兩種情況下,我得到一個System.Runtime.InteropServices.COMException。有任何想法嗎?