Staramy się utworzyć domyślny pulpit Excel, który nasi użytkownicy mogą pobrać. Podczas pobierania arkusza Excela chcemy wypełnić arkusz w pliku jego danymi.Nie można zapisać arkusza Excela po dodaniu danych, jeśli skoroszyt zawiera tabelę przestawną.
Używamy EPPlus do manipulowania arkuszem Excel.
Krótko mówiąc, struktura arkusza jest następujący:
Sheet A
elementy raportowania (tabele obrotu, wykresy obrotu oraz krajalnice)Sheet B
która zawiera cały zestaw danych- Nazwany zakres zdefiniowany jako
=OFFSET(Data!$A$1;0;0;COUNTA(Data!$A:$A);COUNTA(Data!$1:$1))
, który po prostu dostosowuje się do rozmiaru zestawu danych, który wstawiamy do tego arkusza. - Bez względu na zakres nazwany, który został załadowany do Zapytania o moc i dodany do skoroszytów Model danych
- Wszystkie elementy sprawozdawcze od
Sheet A
jest skonfigurowany tak, aby załadować dane z Data Model
Ogólnie rzecz biorąc, to działa świetnie, dopóki jesteśmy ręcznie wpychając Sheet B
z naszymi danymi. Kiedy staramy się wykorzystywać EPPlus za wypełnienie danych otrzymujemy błąd podczas próby zapisania pliku:
The cachesource is not a worksheet
metodą prób i błędów, jakie pozbawione arkusza to części wyizolować przyczynę problemu . Podejrzewaliśmy, że mogły to być fragmentatory, użycie Power Query/Data Model lub trik z nazwanym zasięgiem. Jednak żaden z nich nie stanowi problemu - jeśli usuniemy wszystkie tabele przestawne z arkusza, możemy w prosty sposób zapisać skoroszyt. Ku mojemu zaskoczeniu, możemy korzystać z wykresów przestawnych, tylko tabele powodują problem.
Jakieś sugestie, jak uniknąć tego problemu z EPPlus? Na razie kontynuowaliśmy bez użycia tabel przestawnych, gdybyśmy chcieli je w pewnym momencie zwrócić :)
Na podstawie https://github.com/pruiz/EPPlus/blob/master/EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs (i komunikatu o błędzie) próbowano użyć źródła pamięci podręcznej jako arkusza roboczego? – mjwills
Szczerze mówiąc, nie mam najmniejszego pojęcia, co to oznacza i jak to zrobić :) –
@mjwills Przeszukałem trochę i znalazłem kilka sztuczek, aby wyłączyć pamięć podręczną tabeli przestawnej. Nie mogę znaleźć niczego, co dotyczy zmiany typu pamięci podręcznej w dowolnym miejscu. Sztuką powinno być odznaczenie "Zapisz dane źródłowe z plikiem", ale opcja ta wydaje się szara w naszym przypadku, gdy tabela przestawna ładuje się z modelu danych. –