Konwertowanie danych w formacie zwykłego tekstu do ustrukturyzowanego skoroszytu Excel jest częstym zadaniem dla programistów Java, którzy muszą analizować lub udostępniać informacje. Conholdate.Total for Java jest potężnym zestawem SDK, który upraszcza konwersję TXT do XLSX w przepływie pracy Java na dowolnym serwerze lub komputerze stacjonarnym. W tym przewodniku dowiesz się, jak skonfigurować bibliotekę, przejść przez każdy krok kodowania, zbadać opcje konwersji oraz zastosować wskazówki dotyczące wydajności, aby efektywnie obsługiwać duże pliki.
Zanim zaczniesz: Wymagania wstępne i instalacja
Aby skorzystać z tego samouczka, potrzebujesz:
- Java Development Kit 8 lub nowszy
- IDE, takie jak IntelliJ IDEA lub Eclipse
- Maven do zarządzania zależnościami
- Dostęp do Internetu w celu pobrania artefaktów SDK
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 oficjalnej: Download Conholdate.Total for Java. Po rozwiązaniu zależności jesteś gotowy, aby rozpocząć kodowanie. Następna sekcja przeprowadza krok po kroku implementację.
Budowanie krok po kroku: konwersja TXT do XLSX w Javie
Krok 1: Sprawdź, czy plik wejściowy istnieje
Najpierw upewnij się, że plik źródłowy TXT jest dostępny. Kod sprawdza ścieżkę do pliku i przerywa działanie, jeśli plik nie zostanie znaleziony.
String inputPath = "sample.txt";
File inputFile = new File(inputPath);
if (!inputFile.exists() || !inputFile.isFile()) {
System.err.println("Input file not found: " + inputPath);
return;
}
Krok 2: Ustaw opcje konwersji
Skonfiguruj, jak SDK powinno interpretować dane TXT. Możesz ustawić separator (tabulator, przecinek, średnik itp.), zachować oryginalne formatowanie i włączyć buforowanie w pamięci dla dużych plików.
XlsxConvertOptions options = new XlsxConvertOptions();
options.setDelimiter('\t'); // Tab‑delimited example
options.setPreserveOriginalFormatting(true);
options.setEnableMemoryCache(true);
Aby uzyskać więcej szczegółów, zobacz XlsxConvertOptions API reference.
Krok 3: Wykonaj konwersję
Utwórz instancję Conversion z plikiem wejściowym i wywołaj convert, aby uzyskać wyjście w formacie XLSX.
String outputPath = "sample.xlsx";
try (Conversion conversion = new Conversion(inputFile)) {
conversion.convert(outputPath, options);
} catch (ConversionException | IOException e) {
System.err.println("Conversion failed: " + e.getMessage());
e.printStackTrace();
return;
}
Klasa Conversion zajmuje się ciężką pracą w tle, przekształcając każdą linię pliku TXT w wiersze i kolumny w arkuszu kalkulacyjnym.
Krok 4: Sprawdź plik wyjściowy i zarejestruj wynik
Po konwersji sprawdź, czy plik XLSX został utworzony i nie jest pusty.
File outputFile = new File(outputPath);
if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
System.out.println("Conversion succeeded. Output file: " + outputPath);
} else {
System.err.println("Conversion completed but output file is missing or empty.");
}
Krok 5: Szybka weryfikacja z Apache POI
Opcjonalnie użyj Apache POI, aby odczytać wygenerowany skoroszyt i potwierdzić liczbę arkuszy oraz wierszy.
try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
int sheetCount = workbook.getNumberOfSheets();
System.out.println("Workbook contains " + sheetCount + " sheet(s).");
if (sheetCount > 0) {
Sheet sheet = workbook.getSheetAt(0);
int rowCount = sheet.getPhysicalNumberOfRows();
System.out.println("First sheet row count: " + rowCount);
}
} catch (IOException ex) {
System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
}
Po zakończeniu konwersji możesz teraz zbadać dodatkowe opcje konfiguracji lub skalować proces, aby wsadowo konwertować wiele plików.
Pełny działający przykład konwersji TXT do XLSX w Javie
Poniższy kod demonstruje pełną implementację konwersji TXT do XLSX w języku Java przy użyciu Conholdate.Total for Java.
import com.groupdocs.conversion.Conversion;
import com.groupdocs.conversion.options.convert.XlsxConvertOptions;
import com.groupdocs.conversion.exceptions.ConversionException;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class TxtToXlsxConverter {
public static void main(String[] args) {
// Input TXT file and desired XLSX output paths
String inputPath = "sample.txt";
String outputPath = "sample.xlsx";
// Verify that the input file exists
File inputFile = new File(inputPath);
if (!inputFile.exists() || !inputFile.isFile()) {
System.err.println("Input file not found: " + inputPath);
return;
}
// Configure conversion options
XxlsxConvertOptions options = new XlsxConvertOptions();
// Set delimiter (tab, comma, semicolon, etc.). Here we use tab.
options.setDelimiter('\t');
// Preserve original formatting where possible
options.setPreserveOriginalFormatting(true);
// Enable memory cache to improve performance on large files
options.setEnableMemoryCache(true);
// Perform the conversion
try (Conversion conversion = new Conversion(inputFile)) {
conversion.convert(outputPath, options);
} catch (ConversionException | IOException e) {
System.err.println("Conversion failed: " + e.getMessage());
e.printStackTrace();
return;
}
// Validate that the XLSX file was created and is not empty
File outputFile = new File(outputPath);
if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
System.out.println("Conversion succeeded. Output file: " + outputPath);
// Optional quick validation using Apache POI
try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
int sheetCount = workbook.getNumberOfSheets();
System.out.println("Workbook contains " + sheetCount + " sheet(s).");
if (sheetCount > 0) {
Sheet sheet = workbook.getSheetAt(0);
int rowCount = sheet.getPhysicalNumberOfRows();
System.out.println("First sheet row count: " + rowCount);
}
} catch (IOException ex) {
System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
}
} else {
System.err.println("Conversion completed but output file is missing or empty.");
}
}
}
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ą poprawnie 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.
Konfigurowanie opcji konwersji
SDK udostępnia kilka opcji, które pozwalają precyzyjnie dostosować proces konwersji:
- Delimiter - Określa, jak SDK dzieli każdą linię pliku TXT na kolumny. Przykład używa znaku tabulacji (
'\t'). Możesz zmienić go na przecinek (',') lub dowolny inny znak pasujący do Twoich danych źródłowych. - PreserveOriginalFormatting - Gdy ustawione na
true, SDK stara się zachować oryginalne formatowanie tekstu (takie jak pogrubienie lub kursywa) w wynikowych komórkach XLSX. - EnableMemoryCache - Aktywacja tej flagi poprawia wydajność przy dużych plikach, buforując dane pośrednie w pamięci.
Te opcje są konfigurowane za pomocą obiektu XlsxConvertOptions, jak pokazano w sekcji krok po kroku powyżej.
Optymalizacja wydajności konwersji
Podczas konwertowania dużych plików TXT, rozważ następujące wskazówki:
- Włącz pamięć podręczną -
options.setEnableMemoryCache(true);zmniejsza operacje I/O na dysku i przyspiesza przetwarzanie. - Strumieniuj dane wejściowe - SDK odczytuje plik źródłowy w trybie strumieniowym, ale unikaj ładowania całego pliku do
Stringprzed konwersją. - Ponowne użycie instancji konwersji - Jeśli musisz konwertować wiele plików, utwórz pojedynczy obiekt
Conversionna wątek i używaj go ponownie dla każdego pliku, aby zminimalizować narzut tworzenia obiektów. - Dostosuj stertę JVM - Dla bardzo dużych zestawów danych zwiększ rozmiar sterty JVM (
-Xmx2glub większy), aby zapobiecOutOfMemoryError.
Stosowanie tych praktyk zapewnia, że operacja konwersji TXT do XLSX w Javie pozostaje szybka i oszczędna pod względem pamięci, nawet przy plikach źródłowych o rozmiarze w gigabajtach.
Podsumowanie
Teraz widziałeś, jak konwertować pliki TXT do XLSX w Javie przy użyciu Conholdate.Total for Java. SDK obsługuje parsowanie separatorów, zachowanie formatowania i zarządzanie pamięcią, umożliwiając generowanie profesjonalnych skoroszytów Excel bez konieczności korzystania z Microsoft Office. W przypadku wdrożeń produkcyjnych pamiętaj o uzyskaniu odpowiedniej licencji; szczegóły cenowe możesz sprawdzić na stronie cenowej oraz uzyskać tymczasową licencję do testów na stronie tymczasowej licencji. Dzięki kodowi i wskazówkom zawartym w tym przewodniku możesz zintegrować konwersję TXT‑do‑XLSX w dowolnej aplikacji Java, zautomatyzować przetwarzanie wsadowe i dostarczyć dane w formacie, który użytkownicy końcowi mogą łatwo manipulować.
FAQs
Jak przekonwertować TXT na XLSX w Javie przy użyciu SDK?
Użyj klasy Conversion razem z XlsxConvertOptions. Ustaw żądany separator, włącz pamięć podręczną i wywołaj conversion.convert(outputPath, options). Pełny przykład znajduje się w sekcji „Pełny działający przykład”.
Czy mogę konwertować pliki TXT z delimitowanymi danymi do XLSX bez pisania własnego kodu parsującego?
Tak. Metoda XlsxConvertOptions.setDelimiter w SDK pozwala określić delimiter (przecinek, tabulator, średnik itp.), dzięki czemu możesz konwertować pliki TXT z delimitowanymi danymi do XLSX w Javie jednym wywołaniem API.
Czy można utworzyć wielostronicowy skoroszyt z pojedynczego źródła TXT?
Podczas gdy podstawowy przykład tworzy jeden arkusz, możesz programowo podzielić dane wejściowe i wywołać oddzielne konwersje dla każdego segmentu, a następnie połączyć powstałe arkusze w wielostronicowy skoroszyt XLSX przy użyciu Apache POI lub zaawansowanych funkcji SDK.
