Rozdzielanie dużych skoroszytów Excel na poszczególne arkusze jest powszechną potrzebą, gdy chcesz przetwarzać lub dystrybuować dane według arkusza. Możliwość rozdzielanie skoroszytu Excel w Javie umożliwia programistom izolowanie każdego arkusza w celu oddzielnego przetwarzania lub raportowania. Conholdate.Total for Java udostępnia solidny SDK, który ułatwia wykonanie tego zadania w aplikacjach Java. W tym przewodniku zobaczysz kompletny przykład kodu, dowiesz się, jak skonfigurować bibliotekę, zrozumiesz kwestie wydajności oraz otrzymasz praktyczne wskazówki dotyczące efektywnego obsługiwania dużych plików XLSX.
Pełny działający przykład podziału skoroszytu Excel w Javie
Ten przykład demonstruje, jak podzielić skoroszyt programu Excel na osobne pliki przy użyciu Conholdate.Total.
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.SaveFormat;
import java.io.File;
public class ExcelSplitter {
public static void main(String[] args) {
String sourceFile = "input.xlsx";
String outputDir = "splitted";
File dir = new File(outputDir);
if (!dir.exists()) {
dir.mkdirs();
}
try {
Workbook sourceWorkbook = new Workbook(sourceFile);
int sheetCount = sourceWorkbook.getWorksheets().getCount();
for (int i = 0; i < sheetCount; i++) {
Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
splitWorkbook.getWorksheets().removeAt(0);
}
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
splitWorkbook.dispose();
}
sourceWorkbook.dispose();
} catch (Exception e) {
System.err.println("Error during splitting: " + e.getMessage());
e.printStackTrace();
}
}
}
Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie, upewnij się, że zaktualizowałeś wszystkie ścieżki plików i wartości konfiguracyjne, aby pasowały do rzeczywistego środowiska, sprawdź, czy wszystkie wymagane zależności są prawidłowo zainstalowane, i dokładnie przetestuj w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia w celu uzyskania pomocy.
Kluczowe klasy używane
Ten fragment opiera się na trzech podstawowych klasach z biblioteki Aspose.Cells, która jest dostarczana z Conholdate.Total:
Workbook- reprezentuje cały plik Excel i udostępnia metody do ładowania, zapisywania i manipulowania skoroszytami. Zobacz Workbook class API reference.Worksheet- zapewnia dostęp do pojedynczego arkusza w skoroszycie.SaveFormat- wyliczenie definiujące format wyjściowy;SaveFormat.XLSXzapisuje plik w nowoczesnym kontenerze XLSX.
Te klasy są lekkie, ale przydzielają zasoby natywne, więc ich szybkie zwalnianie (jak pokazano) jest niezbędne dla Zarządzanie pamięcią dla dużych plików Excel.
Rozbijanie podzielonego skoroszytu Excel w Javie
Program podąża za jasną sekwencją, którą możesz dostosować do dowolnego przepływu pracy Excel Split w Javie.
Wyjaśnienie krok po kroku
- Załaduj skoroszyt źródłowy -
new Workbook(sourceFile)odczytuje wejściowy plik XLSX.
Workbook sourceWorkbook = new Workbook(sourceFile);
- Utwórz katalog wyjściowy - Sprawdza, czy docelowy folder istnieje i tworzy go w razie potrzeby.
File dir = new File(outputDir);
if (!dir.exists()) {
dir.mkdirs();
}
- Iteruj przez arkusze -
sourceWorkbook.getWorksheets().getCount()zwraca liczbę arkuszy, a pętla przetwarza każdy arkusz.
for (int i = 0; i < sheetCount; i++) {
Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
}
- Skopiuj bieżący arkusz do nowego skoroszytu -
addCopy(sheet)duplikuje arkusz, a domyślny pusty arkusz jest usuwany, jeśli istnieje.
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
splitWorkbook.getWorksheets().removeAt(0);
}
Zapisz podzielony skoroszyt - Generuje bezpieczną nazwę pliku i zapisuje arkusz jako plik XLSX.
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_"); String outPath = outputDir + File.separator + safeName + ".xlsx"; splitWorkbook.save(outPath, SaveFormat.XLSX);Zwolnij zasoby - Wywołuje
dispose()zarówno na tymczasowym, jak i źródłowym skoroszycie, aby zwolnić pamięć i uniknąć wycieków natywnych.
Cały przepływ to praktyczny przykład kodu Java do dzielenia arkuszy Excel, który może być osadzony w większych pipeline’ach przetwarzania danych.
Wymagania wstępne i konfiguracja - Rozpoczęcie pracy z Conholdate.Total
Zanim będziesz mógł skompilować i uruchomić przykład, upewnij się, że Twoje środowisko programistyczne spełnia następujące wymagania.
Konfiguracja Maven
Dodaj repozytorium Maven Conholdate oraz zależność SDK do swojego pom.xml:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
Pobierz najnowszy pakiet SDK ze strony pobierania: Conholdate.Total for Java pobierz. Biblioteka wymaga Java 8 lub nowszej i działa na dowolnej standardowej JVM.
Konfiguracja licencji
Do produkcyjnego użycia wymagana jest ważna licencja. Tymczasową licencję do testów możesz uzyskać na stronie tymczasowej licencji. Dla długoterminowych projektów przejrzyj opcje cenowe na stronie cenowej. Po uzyskaniu pliku licencji ustaw go w kodzie uruchomienia aplikacji (nie pokazano tutaj), jak opisano w dokumentacji.
Praktyczne wskazówki dotyczące efektywnego dzielenia plików Excel
Praca z dużymi skoroszytami wymaga ostrożnego zarządzania zasobami. Poniższe zalecenia pomogą utrzymać proces szybkim i niezawodnym.
Zalecenia dotyczące zarządzania pamięcią
- Zwolnij każdy tymczasowy skoroszyt po zapisaniu, aby zwolnić zasoby natywne i utrzymać niskie zużycie pamięci.
- Ponownie używaj obiektów, gdy to możliwe - tworzenie pojedynczej instancji
Workbookdla źródła i ponowne użycie tego samego obiektuFiledla katalogu wyjściowego zmniejsza obciążenie garbage‑collectora. - Rozważ tryb strumieniowy jeśli Twoja wersja Conholdate.Total go obsługuje; strumieniowanie odczytuje wiersze na żądanie zamiast ładować cały skoroszyt do pamięci.
Typowe pułapki i jak ich uniknąć
| Objaw | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
java.lang.OutOfMemoryError | Przechowywanie każdego podzielonego skoroszytu w pamięci | Upewnij się, że splitWorkbook.dispose() jest wywoływane wewnątrz pętli, jak pokazano. |
| Błąd nieprawidłowej nazwy pliku | Nazwa arkusza zawiera znaki takie jak `\ / : * ? " < > | ` |
| Brakujące pliki wyjściowe | Ścieżka katalogu wyjściowego jest nieprawidłowa lub nie ma uprawnień do zapisu | Sprawdź, czy outputDir wskazuje lokalizację z uprawnieniami do zapisu. |
Usprawnienia wydajności
- Rejestrowanie postępu - wydrukowanie nazwy arkusza przed zapisem pomaga zidentyfikować punkt awarii w dużych partiach.
- Zwiększenie sterty JVM - dla wyjątkowo dużych skoroszytów, uruchom JVM z opcją
-Xmx2g(lub wyższą), aby zapewnić procesowi więcej pamięci. - Przetwarzanie równoległe - jeśli skoroszyt nie jest współzależny, możesz podzielić pracę na wiele wątków, ale pamiętaj, że podstawowa biblioteka natywna nie zawsze jest bezpieczna wątkowo; przetestuj dokładnie.
Stosując te wskazówki, możesz efektywnie dzielić skoroszyt Excel w Javie, nawet gdy masz do czynienia z tysiącami arkuszy lub skoroszytami o rozmiarze setek megabajtów.
Podsumowanie
Podzielenie skoroszytu Excel na pojedyncze pliki XLSX przy użyciu Conholdate.Total for Java to prosta, a jednocześnie potężna technika dla programistów Java, którzy potrzebują szczegółowego dostępu do danych arkuszy. Dostarczony kod pokazuje kompletny przepływ pracy, od wczytania źródłowego skoroszytu po zwolnienie zasobów po zapisaniu każdego arkusza. Korzystanie z tego podejścia do dzielenia skoroszytu Excel w Javie daje Ci precyzyjną kontrolę nad każdym arkuszem i łatwo integruje się z większymi pipeline’ami przetwarzania danych. Pamiętaj, aby uzyskać odpowiednią licencję do użytku produkcyjnego; możesz zapoznać się z opcjami cenowymi na pricing page lub poprosić o tymczasową licencję na temporary license page. Z zainstalowanym SDK i zastosowanymi zaleceniami najlepszych praktyk, jesteś gotowy, aby poradzić sobie nawet z najbardziej wymagającymi scenariuszami podziału Excel w Javie.
Najczęściej zadawane pytania
Jak mogę podzielić skoroszyt Excel w Javie przy użyciu Conholdate.Total?
Użyj klasy ExcelSplitter pokazanej w pełnym przykładzie. Ładuje ona źródłowy skoroszyt, iteruje przez każdy arkusz, tworzy nowy skoroszyt dla każdego arkusza i zapisuje go jako osobny plik XLSX. Ta metoda działa również, gdy potrzebujesz podzielić plik XLSX przy użyciu Javy dla dowolnego rozmiaru skoroszytu.
Czy SDK jest kompatybilny ze wszystkimi wersjami Javy?
SDK obsługuje Javę 8 i nowsze. Upewnij się, że Twój projekt celuje w kompatybilną wersję JDK.
Czy muszę ustawić licencję przed uruchomieniem kodu?
Licencja jest wymagana przy wdrożeniach produkcyjnych. Możesz uzyskać tymczasową licencję do testów na stronie tymczasowej licencji oraz zapoznać się z pełnym cennikiem na stronie cenowej.
Co jeśli mój skoroszyt zawiera tysiące arkuszy?
Przetwarzaj skoroszyt w partiach, niezwłocznie usuwaj każdy tymczasowy skoroszyt i w razie potrzeby rozważ zwiększenie rozmiaru sterty JVM. Logowanie nazw poszczególnych arkuszy pomaga szybko zidentyfikować ewentualny problematyczny arkusz.
