Pojawiające się białe prostokąty w losowych arkuszach.

Użytkowanie arkusza kalkulacyjnego
tombar
Posty: 2
Rejestracja: pt lut 22, 2019 9:38 am

Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: tombar »

Witam

Mam plik .xlsx na którym pracuje przy pomocy oprogramowania LibreOffice oraz M$ office 2016 i czasem losowo po otwarciu dokumentu pojawiają się w niektórych arkuszach kształty/pola tekstowe (można w nie wpisać tekst) zasłaniające zawartość komórek. Przeważnie jest ich kilkanaście ale zdarza się też kilkadziesiąt. Usuwanie 50 prostokątów jest dość uciążliwe. Próbowałem odtwarzać sytuacje w których zauważyłem pojawienie się kształtów jednak to nic nie dało. Pojawiają się jak chcą. Arkusz jest dość prosty. Są w nim głównie formuły "=JEŻELI" oraz "=WYSZUKAJ.PIONOWO" oraz formatowanie warunkowe, które zaznacza komórki spełniające jakiś warunek. Bardzo prosiłbym o pomoc!

Pozdrawiam
LibreOffice 6.2, Win 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: Jan_J »

Jakieś makro może siedzi w tym dokumencie?
Narzędzia/Makra/Zarządzaj/LibreOffice Basic/[Twój dokument] ?
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
tombar
Posty: 2
Rejestracja: pt lut 22, 2019 9:38 am

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: tombar »

W makrach jest pusto, tylko formatowanie warunkowe i formuły.
Nie mam pojęcia gdzie szukać przyczyny.
LibreOffice 6.2, Win 7
kubha
Posty: 4
Rejestracja: ndz gru 29, 2019 2:36 pm

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: kubha »

Podbijam temat. Mam ten sam problem i widzę, że nie został rozwiązany.
LibreOffice 6.3 / Windows 10
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: Jan_J »

Prześlij plik który tak się zachowuje. Powinien być możliwie prosty i bez żadnych treści o charakterze poufnym.
Sprawdzimy jego strukturę niskopoziomową, przez przeczytanie kodu źródłowego.
Jest szansa, że to nic nie da, jeśli problem tkwi w konfiguracji programu a nie w dokumencie. Ale od czegoś trzeba zacząć.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kubha
Posty: 4
Rejestracja: ndz gru 29, 2019 2:36 pm

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: kubha »

W załączeniu 2 wyczyszczone pliki. Plik pierwotny zapisany za pomocą Excel 2016. "Plik testowy - kopia" zapisany w LibreOffice 6.3. Jedyna wprowadzona zmiana to wpisanie cyfry 1 w komórce jednego z arkuszy. W ostatnim arkuszu pojawiły się te problematyczne prostokąty.
Mam dwa bliźniacze pliki. W jednym problem pojawia się właśnie w tym wskazanym arkuszu. W drugim problem pojawia się we wszystkich nieukrytych arkuszach. Nie mam pojęcia w czym może być problem.
Załączniki
Plik testowy — kopia.xlsx
Plik po zmianie w LibreOffice
(21.27 KiB) Pobrany 131 razy
Plik testowy.xlsx
Plik pierwotny
(30.08 KiB) Pobrany 133 razy
LibreOffice 6.3 / Windows 10
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: Jan_J »

Przyczyną problemu jest wadliwy projekt tego konkretnego pliku excelowskiego, a wyzwala go prawdopodobnie błąd (lub niekonsekwencja) w filtrze Calca do importu plików xlsx.

Oryginalny plik został przygotowany w ten sposób, że na 3 arkuszu ma rysunek składający się z kilkudziesięciu ukrytych kształtów.

W Excelu nie umiem „zobaczyć” tych obiektów ani jako grafik w dokumiencie, ani jako elementów jakiegoś konspektu. Calc pokazuje je w widoku konspektu (F5) co jeszcze nie przesądza o ich pochodzeniu, w końcu mógł je sam wstawić przy czytaniu. Ale sprawdziłem kod xml pliku "Plik testowy.xlsx" po rozpakowaniu kontenera zip, jakm jest xlsx. I one tam są, w pliku drawing3.xml przypiętym do pliku sheet3.xml.

I zdaje się jest tak, że Libre przy imporcie (albo przy którejś późniejszej operacji; np. przy zapisie z powrotem do dokumentu xlsx) nie za bardzo przejmuje się atrybutem hidden="1" tych obiektów, więc się pojawiają. Ale nic się nie tworzy „samo”, liczba obiektów cały czas się zgadza. Nie leży w zakresie moich umiejętności stwierdzenie, na którym etapie to się dzieje.

Nie wiem jak takie coś udało się przygotować interfejsem Excela, ale zapis w pliku jest prawidłowy. Pytanie: do czego to służy? prawdopodobnie do niczego; przypuszczam że autor wzorcowego dokumentu nawet nie jest świadomy istnienia tych rysunków. Taka jest konsekwencja używania programów prawie-WYSIWYG, oprócz niewątpliwej wygody.

Mamy więc:
a. mało poważny błąd projektowy skoroszytu xlsx, którego autor zdaje się nie jest świadom;
b. mało poważny błąd importu xlsx przez Calca, który powoduje że rzeczy ukryte czasami stają się widoczne.

Co można zrobić? ja bym poprawił a. tj. przygotował wzorcowy xlsx bez rzeczonych grafik. Jeżeli ufamy Calcowi pod względem jakości przygotowanych dokumentów xlsx, można by użyć go do ich usunięcia (wspomniany nawigator F5 będzie w tym pomocny). Grafiki po usunięciu same nie będą się odtwarzać.

Jeżeli nie ufamy Calcowi, to trzeba poprawić plik excelowski Excelem. Ale nie bardzo wiem jak, bo nie umiem ani wywołać czegoś w rodzaju nawigatora, ani odkryć ukrytych obiektów, ani nawet ukryć widocznych. Co nie oznacza że nie ma metody; ja się nie interesuję jakoś specjalnie możliwościami interfejsów użytkownika i wielu rzeczy po prostu manualnie nie umiem zrobić.

Wpadło mi do głowy, że ukrycie rysunku mogło być efektem ukrycia w Excelu obszaru komórek, na którego tle kiedyś rysunek ów był widoczny. Więc może jakieś <Pokaż wszystko>?

A jeśli nie, to cierpliwie przekopiować do nowego skoroszytu tylko regiony z danymi i obliczeniami; uważając, by nie przykleiły się wątpliwe a niewidoczne dekoracje graficzne.

(Ostatnia metoda, ręczna poprawa kodu w pliku xlsx, też wchodzi w grę, ale stwarza spore ryzyko, jako że dokumenty xlsx są bardzo skomplikowane i często zmiana w jednym miejscu nie wystarczy, by zachować spójność.)

Teoretycznie można by przygotować zgłoszenie błędu, ale uważam, że powinno ono zawierać opis przygotowania dokumentu xlsx, tak by problem się objawiał. To by wymagało eksperymentów z „ukrywaniem” rysunków albo regionów komórek leżących pod rysunkami -- w pliku xlsx za pomocą Excela.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kubha
Posty: 4
Rejestracja: ndz gru 29, 2019 2:36 pm

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: kubha »

Po analizie poprzedniego postu doszedłem do wniosku, że problemem są komentarze. W tym arkuszu skoroszytu jest proste formatowanie komórek, sumowanie kolumn i właśnie ukryte komentarze. Nie tworzyłem w nim nic bardziej skomplikowanego. Tylko w tym arkuszu są komentarze i tylko w tym pojawia się problem. Ponadto komentarze z ładnych prostokątów robią się takie jak w załączniku (czarny prostokąt zakrywa dane). Usunąłem więc arkusz, zrobiłem wszystko od nowa i problem ustąpił.
Problemem jest drugi, bliźniaczy skoroszyt. Tam mogę obejść się bez komentarzy, ale najpierw muszę usunąć po kilkadziesiąt prostokątów na arkusz, a potem komentarz. Takich arkuszy jest tam kilkadziesiąt. Da się jakoś to zautomatyzować, czy muszę ręcznie to robić?
Załączniki
Komentarz.png
Komentarz.png (3.47 KiB) Przejrzano 2028 razy
LibreOffice 6.3 / Windows 10
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: Jan_J »

Brzmi rozsądnie. Nareszcie mamy diagnozę.

Widocznie filtr importujący xlsx-a nie bardzo „wie”, jako sobie poradzić z excelowskim komentarzem i robi z niego kształt. To zachowanie już ewidentnie nadaje się do zgłoszenia poprawki, o ile test (a powinno dać się go łatwo przygotować) je potwierdzi.

Co do usuwania w Calcu, użyć Nawigatora niestety w tym celu się nie da.
Takie makro

Kod: Zaznacz cały

sub UsuwaWszystkieObiektyZBiezacegoArkuszaWBiezacymSkoroszycie
    s = ThisComponent.currentController.getActiveSheet()
    p = s.getDrawPage()
    n = p.Count
    do while n > 0
       e = p.getByIndex(n-1)
       p.Remove(e)
       n = n-1
    loop
end sub
po uruchomieniu usuwa wszystkie obiekty rysunkowe z bieżącej planszy bieżącego dokumentu Calca.
Działa, ale jest bardzo prymitywne i nie ręczę, że nie usunie zbyt wiele (wykresy i „chciane” rysunki). Na wszelki wypadek zrób kopię zapasową, jeśli chcesz go użyć. Jeśli usunie potrzebną treść, pomyślimy o selektywnym niszczeniu, można podejrzeć typ albo etykietę obiektu.

Ale to już w *2020*.
Dobrego!
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kubha
Posty: 4
Rejestracja: ndz gru 29, 2019 2:36 pm

Re: Pojawiające się białe prostokąty w losowych arkuszach.

Post autor: kubha »

Dzięki za pomoc. Jednak poradziłem sobie ręcznie. Usuwanie tego w Excelu strasznie zamula. W Libre działa płynnie i szybko poszło, tylko ręka od klikania boli :)
LibreOffice 6.3 / Windows 10
ODPOWIEDZ