Chwyć Open XML SDK 2.0 i uruchom „Open XML Productivity Tool for Microsoft Office”. Jest to zgrabna aplikacja, która pozwala wykonać kilka analiz danych XML w .xlsx lub .docx, i powinna ułatwić Ci sprawdzenie, gdzie jest ta przepaść za pomocą narzędzia do porównywania, aby porównać zawartość dwóch dokumentów w XML poziom.
Istnieje kilka możliwości:
- LibreOffice może wstawiać dodatkowe dane (style czcionek / komórek, informacje o formatowaniu itp.), Które Office traktuje jako „dorozumiane” lub zawarte w szablonie „Normal”.
- LibreOffice może nie kompresować danych. Jeśli nie wiesz, Office używa kompresji bezstratnej (podobnej do ZIP) do kompresji wszystkich danych w swoich formatach Open XML. Myślałem, że LibreOffice ma to obsługiwać, ale może jest problem z kompresją w wersji, w której działa osoba. Jest to najbardziej prawdopodobna sytuacja, jeśli nie widzisz istotnych różnic w danych podczas uruchamiania narzędzia do porównywania.
- LibreOffice może ponownie analizować dane, tworzyć własną strukturę wewnętrzną i zapisywać dane (przy użyciu oddzielnej procedury) w sposób, który najlepiej pasuje do jej wewnętrznej reprezentacji dokumentu, która może być mniej wydajna niż własna Office. To, jeśli to prawda, byłoby bardziej problemem projektowym i wskazuje na podstawowe różnice w funkcjach i technologiach używanych w rodzimej funkcjonalności LibreOffice w porównaniu z funkcjami Office.
Możesz łatwo wykluczyć drugą możliwość (problemy z kompresją) w następujący sposób:
- Weź wersję ~ 220K Office, otwórz ją w LibreOffice, dodaj pojedynczy znak do pojedynczej komórki i zapisz go.
- zainstalować 7-Zip jeśli jeszcze go nie masz.
- Otwórz plik .xlsx zapisany przez LibreOffice i plik .xlsx zapisany przez Excel, w formacie 7-zip.
- Poruszaj się po hierarchii katalogów archiwum i znajdź a plik (nie katalog).
- Porównaj „Rozmiar” i „Rozmiar spakowany”. Jeśli rozmiary składowania LibreOffice jest znacznie większy, a LibreOffice rozrasta się sam. Jeśli rozmiary są prawie takie same, ale Rozmiar spakowany nie jest o wiele mniejszy niż rozmiar, wtedy kompresja nie jest używana lub niewłaściwa kompresja. Na moim komputerze program Microsoft Excel 2010 kompresuje plik _rels.rels z 588 bajtów do 245, a plik xl style.xml z 3037 bajtów do 878.
Możesz łatwo wykluczyć pierwszą kulkę w następujący sposób:
- Weź wersję ~ 220K Office, otwórz ją w LibreOffice, dodaj pojedynczy znak do pojedynczej komórki i zapisz go.
- Uruchom narzędzie wydajności i porównaj XML.
- Jeśli dokumenty są praktycznie identyczne, z wyjątkiem bardzo małego, zamkniętego obszaru, w którym dokonano zmiany pojedynczego znaku, prawdopodobnie pierwsze wydanie (wstawienie dodatkowych danych) nie ma zastosowania.
Jeśli wykluczyłeś zarówno pierwsze, jak i drugie zagadnienie, jedyną możliwością, jaką widzę, jest trzecia, która nie jest łatwa do naprawienia i może oznaczać, że LibreOffice jest „po prostu nieefektywny”.
Aby rozwiązać ten problem, pierwszą rzeczą, jaką zrobię, jest przetestowanie znacznie nowszej wersji LibreOffice. Wypróbuj ich kandydata do beta / release / cokolwiek się stanie. Wypróbuj go na różnych platformach, takich jak Windows lub Linux. Sprawdź, czy możesz znaleźć wersję lub platformę, która daje bardziej wydajne wyniki niż inne. Ogólnie rzecz biorąc, nowsze wersje (nawet wersje przedpremierowe) częściej zawierają rozwiązanie problemu niż starsze wersje.