Czy istnieje sposób zapisywania zmian w arkuszu kalkulacyjnym programu Excel za pośrednictwem programu Excel Interop (w tym przypadku dodaję do niego arkusz) bez monitowania użytkownika, jeśli chcą nadpisać istniejący plik zmianami. Nie chcę, aby użytkownik zobaczył nawet arkusz kalkulacyjny otwarty w mojej aplikacji, więc pojawienie się okna z pytaniem, czy chce go zastąpić, wydaje się być nie na miejscu i może być mylące dla użytkownika.Jak zapisać/zastąpić istniejący plik programu Excel za pomocą programu Excel Interop - C#
Używam metody workbook.SaveAs (fileloaction).
Oto gdzie inicjalizuję obiekty odniesienia COM dla programu Excel.
private Excel.Application app = null;
private Excel.Workbook workbook = null;
public Excel.Workbook Workbook
{
get { return workbook; }
set { workbook = value; }
}
private Excel.Worksheet worksheet = null;
private Excel.Range workSheet_range = null;
Poniżej znajduje się kod, którego używam do zamykania/zapisywania pliku excela. Linia metody workbook.close() jest tą, która podobno rzuca nieobsługiwany wyjątek.
workbook.Close(true, startForm.excelFileLocation, Missing.Value);
Marshal.ReleaseComObject(app);
app = null;
System.GC.Collect();
Firma Awesome dzięki to działa! Gdybym tylko mógł znaleźć sposób na zamknięcie go tak, jak robisz to wyżej, nie powodując, że moja aplikacja C# wyrzuci nieobsługiwany wyjątek i awarię. Nie mogę zamknąć aplikacji po zapisaniu i zamknięciu pliku Excela. To musi pozostać otwarte. – user1546315
Czy możesz napisać trochę kodu (lub opublikować nowe pytanie z tym kodem, jeśli nie pasuje do tego pytania) ... To wydaje się dziwne i, jestem pewien, łatwo naprawić ... –
Mam zaktualizowany post z jakimś kodem. Jeśli potrzebujesz więcej, daj mi znać. Napisałem już wiele wątków o tym problemie, wypróbowałem kilka rozwiązań, ale nie mogę jeszcze zamknąć/zapisać skoroszytu programu Excel bez zgłoszenia nieobsługiwanego wyjątku i awarii aplikacji C#. – user1546315