Zapis pliku Excela z użyciem biblioteki EPPlus

0

Otóż moj problem wygląda następująco. Mam do napisania program, który będzie pobierał dane z pliku Excela do ComboBoxów. Następnie użytkownik ma wybrać z każdego ComboBoxa po jednej wartości. Po naciśnięciu przycisku wybrane aktualnie wartości mają się zapisać do innego pliku Excela w odpowiednich kolumnach.

Program realizuje w formie WPF i używam biblioteki EPPlus. Cały kod zamknięty jest w 2 funkcjach, przyciskach. Mam problem z 2 przyciskiem, tym, w którym jest polecenie zapisu danych z ComBoboxów do pliku.

Zostaje pokazany taki oto komunikat

An unhandled exception of type 'System.InvalidOperationException' occurred in EPPlus.dll

Additional information: Error saving file C:\Users\Wojtek\Desktop\dane3.xls

ze wskazaniem na ostatnią linijkę

 paczka3.Save()

a oto reszta kodu:

   private void button2_Click(object sender, EventArgs e)
        {
            FileInfo plik3 = new FileInfo(@"C:\Users\Wojtek\Desktop\dane3.xlsx");
            ExcelPackage paczka3 = new ExcelPackage(plik3);
            ExcelWorksheet wizyty = paczka3.Workbook.Worksheets[1];

            
            
                wizyty.Cells["A" + li.ToString()].Value = comboBox1.Text;
                wizyty.Cells["B" + li.ToString()].Value = comboBox2.Text;
                wizyty.Cells["C" + li.ToString()].Value = comboBox3.Text;
                wizyty.Cells["D" + li.ToString()].Value = comboBox4.Text;

                li++; //zmienna umieszczona na początku programu
            paczka3.Save();

        }
 
0

Jest coś w InnerException?

0

Nie jestem pewien ale tu

ExcelWorksheet wizyty = paczka3.Workbook.Worksheets[1];

chcesz od razu drugi worksheet czy on na pewno istnieje?

0

Myślę że tu worksheety indeksuje się od 1 a nie od 0. Zresztą jak wstawię 0 to jakiś inny błąd wywala.
A co to jest to InnerExceptions? Jakieś okienko?. Obsługi wyjątków nie robiłem jak coś.

0

A próbowałeś tak ExcelWorksheet wizyty = paczka3.Workbook.Worksheets.Add("Content"); ?

Myślę że tu worksheety indeksuje się od 1 a nie od 0. Zresztą jak wstawie 0 to jakiś inny błąd wywala.

Po skompilowaniu? I co to za błąd?

0

Po wstawieniu indeksu 0:

An unhandled exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll

Additional information: Dany klucz nie był obecny w słowniku.

Wersja z Add("Content") też wywala błąd zapisu.

2

Tak numeracja jest od jedynki. A co do zapisu nie trzymasz gdzieś tego pliku nie wiem może masz ciągle otwartego excela? Zgaduje.. ;)

0

A ma znaczenie to czy Excel jest zainstalowany? Mam tylko ExcelViewer, bo nie pracuję na plikach Excela prawie wcale, wyjątkiem jest to co mam teraz do zrobienia, więc myślałem że sama przeglądarka plików wystarczy. A jak zamknąłem to jest to samo. A jeszcze jedno właśnie ten plik który próbuję zedytować nie chce się otworzyć normalnie po nieudanym zapisie.

0

Dobra problem wygląda na rozwiązany, zamknąłem " Excela" i spróbowałem zapisywać do innego pliku. To właśnie pomogło.

Dziękuję bardzo wszystkim za pomoc a w szczególności użytkownikowi: DibbyDum . Niby taka prosta rzecz a jak wiele pomogła.

Nie wiem czy i jak się tutaj tematy zamyka, ale nie mówię jeszcze ostatniego słowa bo może coś jeszcze wyskoczy niespodziewanie.

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