Cześć.
Mam plik excel, który zbiera dane z kilku innych - źródłem danych są inne pliki.
Żeby pobrać aktualne dane najpierw muszę otworzyć ten zbiorczy plik i zezwolić mu na aktualizowanie łącz do plików.
Próbowałem to zautomatyzować dodając odświeżenie danych w taki sposób:
FileInfo file = new FileInfo(S_Directory);
try
{
xls.Application ExcelObj = new xls.Application();
ExcelObj.DisplayAlerts = false;
ExcelObj.Visible = false;
ExcelObj.DefaultFilePath = S_Directory;
xls.Workbook eBook = ExcelObj.Workbooks.Open(file.ToString(), false, false,
Type.Missing, "", "", true, xls.XlPlatform.xlWindows, "",
false, false, 0, false, true, 0);
foreach (xls.WorkbookConnection wc in eBook.Connections)
{
if (wc.Type.ToString() == "xlConnectionTypeODBC")
{
wc.ODBCConnection.BackgroundQuery = false;
}
else
{
wc.OLEDBConnection.BackgroundQuery = false;
}
}
eBook.RefreshAll();
eBook.Save();
ExcelObj.Workbooks.Close();
ExcelObj.Quit();
}
catch (Exception e)
{
}
Jednak RefreshAll nie aktualizuje danych z zewnętrznych arkuszów... Po włączeniu excela zawsze wyświetla się komunikat:
SECURITY WARNING Links to external sources could be unsafe. If you trust the links, click Update.
I kliknięcie Update łączy z linkami - można to wywołać przez EPPlus?
Pozdrawiam