EPPlus - odświeżenie linków do zewnętrznych arkuszy Excel

0

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

0

A co się stanie gdy wyłączysz to w Excelu/arkuszu: https://www.miqrogroove.com/blog/2019/excel-security-warning ?

0
mstl napisał(a):

A co się stanie gdy wyłączysz to w Excelu/arkuszu: https://www.miqrogroove.com/blog/2019/excel-security-warning ?

Cześć, w takim wypadku przy standardowym otwarciu pliku dane automatycznie zostaną odświeżone - przy zamykaniu excel widzi zmianę i pyta czy zapisać.
Niestety od strony aplikacji efekt jest taki sam - plik teoretycznie jest otwierany i zapisywany bez aktualizacji danych.

1

Cześć, minęło trochę czasu - ale gdyby ktoś szukał jak rozwiązać podobny problem:
z EPP nie udało mi się, ale z Microsoft.Office.Core już tak:

var _xlApp = new xls.Application { AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityLow };
xlApp.CalculateFull();
var _xlBook = _xlApp.Workbooks.Open(S_Directory, UpdateLinks: 3);
_xlApp.DisplayAlerts = false;
_xlBook.Save();
_xlBook.Close();
_xlApp.DisplayAlerts = true;

1 użytkowników online, w tym zalogowanych: 0, gości: 1