Dodaj znak wodny do Excela przy użyciu GroupDocs.Watermark Java

Dodawanie znaków wodnych do plików Excel może zmienić zasady gry — niezależnie od tego, czy musisz chronić wrażliwe dane, oznaczyć swoje raporty marką, czy po prostu dodać profesjonalny akcent. W tym samouczku dowiesz się, jak dodać znak wodny do Excela przy użyciu GroupDocs.Watermark dla Javy, z jasnymi wyjaśnieniami, rzeczywistymi przykładami i wskazówkami, jak unikać typowych pułapek.

Szybkie odpowiedzi

  • Jakiej biblioteki potrzebuję? GroupDocs.Watermark for Java (najnowsza wersja).
  • Jakie formaty Excel są obsługiwane? pliki .xlsx i .xls (niezaszyfrowane).
  • Czy mogę dodać znaki wodne jako obrazy? Tak — SDK obsługuje zarówno tekstowe, jak i graficzne znaki wodne.
  • Czy potrzebna jest licencja do produkcji? Wymagana jest licencja komercyjna dla wdrożeń nie‑testowych.
  • Jak długo trwa implementacja? Około 10‑15 minut dla podstawowego tekstowego znaku wodnego.

Co to jest dodaj znak wodny do Excela?

Dodanie znaku wodnego do skoroszytu Excel oznacza naniesienie widocznego (lub półprzezroczystego) tekstu lub obrazu na każdy arkusz lub osadzony dokument. Pomaga to zaznaczyć własność, wskazać poufność lub wzmocnić markę w całym pliku.

Dlaczego używać GroupDocs.Watermark dla Javy?

GroupDocs.Watermark oferuje wysokopoziomowe API, które ukrywa złożoność pracy ze strukturami Office Open XML. Umożliwia ono:

  • Zastosowanie znaków wodnych do wielu arkuszy w jednym wywołaniu.
  • Automatyczne obsługiwanie osadzonych załączników (np. osadzone PDF‑y).
  • Zachowanie oryginalnego formatowania i formuł.
  • Praca zarówno z tekstowymi, jak i graficznymi znakami wodnymi (np. add image watermark java).

Wymagania wstępne

  • Środowisko programistyczne Java – Java 8 lub wyższa (JDK).
  • GroupDocs.Watermark for Java SDK – pobierz najnowsze wydanie z tutaj.
  • IDE – IntelliJ IDEA, Eclipse lub dowolny edytor kompatybilny z Javą.
  • Przykładowy arkusz – plik .xlsx, który chcesz zabezpieczyć.

SDK możesz dodać do swojego projektu za pomocą Maven, Gradle lub ręcznie umieszczając pliki JAR na classpath.

Importowanie pakietów

Te importy dają dostęp do podstawowych klas znakowania, obsługi arkuszy oraz narzędzi czcionek.

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.examples.Constants;
import com.groupdocs.watermark.domain.DocumentInfo;
import com.groupdocs.watermark.domain.FileType;
import com.groupdocs.watermark.domain.content.SpreadsheetContent;
import com.groupdocs.watermark.domain.content.SpreadsheetWorksheet;
import com.groupdocs.watermark.domain.content.SpreadsheetAttachment;
import com.groupdocs.watermark.domain.document.IDocumentInfo;
import com.groupdocs.watermark.domain.loadoptions.SpreadsheetLoadOptions;
import com.groupdocs.watermark.domain.wrappers.TextWatermark;
import java.awt.Font;

Jak oznaczyć arkusz znakem wodnym – Przewodnik krok po kroku

Poniżej znajduje się praktyczny, numerowany przewodnik, który dokładnie pokazuje, jak oznaczyć arkusz znakem wodnym przy użyciu Javy. Każdy krok zawiera krótkie wyjaśnienie, po którym następuje oryginalny blok kodu (bez zmian).

Krok 1: Skonfiguruj obiekt znaku wodnego

Dlaczego? Ten obiekt definiuje wygląd wizualny znaku, który zostanie zastosowany.

TextWatermark watermark = new TextWatermark("Confidential", new Font("Arial", 19));

Krok 2: Załaduj arkusz

Dlaczego? Otwarcie skoroszytu daje SDK uchwyt do edycji.

SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("your-file-path.xlsx", loadOptions);

Krok 3: Uzyskaj dostęp do zawartości arkusza i jego arkuszy

Dlaczego? Pliki Excel mogą zawierać wiele arkuszy; musisz iterować po każdym z nich.

SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet worksheet : content.getWorksheets()) {
    // Process each worksheet
}

Krok 4: Przejdź przez załączniki w każdym arkuszu

Dlaczego? Niektóre arkusze osadzają inne dokumenty (np. PDF‑y). Ich obsługa zapewnia spójny znak wodny w całym pliku.

for (SpreadsheetAttachment attachment : worksheet.getAttachments()) {
    IDocumentInfo info = attachment.getDocumentInfo();
    if (info.getFileType() != FileType.Unknown && !info.isEncrypted()) {
        // Process the supported attachment
    }
}

Krok 5: Dodaj znak wodny do każdego załączonego dokumentu

Dlaczego? Chcesz, aby każdy osadzony plik miał ten sam znak „Poufny”.

Watermarker attachedWatermarker = attachment.createWatermarker();
attachedWatermarker.add(watermark);
attachment.updateContent(attachedWatermarker);
attachedWatermarker.close();

Krok 6: Zapisz wszystkie zmiany

Dlaczego? Zapisz zmiany w nowym skoroszycie.

watermarker.save("your-output-file.xlsx");

Krok 7: Zamknij zasoby

Dlaczego? Zwolnienie zasobów zapobiega wyciekom pamięci, szczególnie przy przetwarzaniu dużych skoroszytów.

watermarker.close();

Połączenie wszystkiego: pełny przykład

Poniższa klasa łączy wszystkie kroki w jeden, uruchamialny program. Nie modyfikuj bloku kodu – jest identyczny z oryginalnym przykładem.

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.domain.DocumentInfo;
import com.groupdocs.watermark.domain.FileType;
import com.groupdocs.watermark.domain.content.SpreadsheetContent;
import com.groupdocs.watermark.domain.content.SpreadsheetWorksheet;
import com.groupdocs.watermark.domain.content.SpreadsheetAttachment;
import com.groupdocs.watermark.domain.loadoptions.SpreadsheetLoadOptions;
import com.groupdocs.watermark.domain.wrappers.TextWatermark;
import java.awt.Font;

public class WatermarkSpreadsheet {
    public static void main(String[] args) {
        try {
            // Step 1: Create watermark
            TextWatermark watermark = new TextWatermark("Confidential", new Font("Arial", 19));
            
            // Step 2: Load spreadsheet
            SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
            Watermarker watermarker = new Watermarker("path/to/your/spreadsheet.xlsx", loadOptions);
            
            // Step 3: Access content and worksheets
            SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
            for (SpreadsheetWorksheet worksheet : content.getWorksheets()) {
                
                // Step 4: Loop attachments
                for (SpreadsheetAttachment attachment : worksheet.getAttachments()) {
                    DocumentInfo info = attachment.getDocumentInfo();
                    if (info.getFileType() != FileType.Unknown && !info.isEncrypted()) {
                        
                        // Step 5: Watermark attached documents
                        Watermarker attachedWatermarker = attachment.createWatermarker();
                        attachedWatermarker.add(watermark);
                        attachment.updateContent(attachedWatermarker);
                        attachedWatermarker.close(); // Clean up
                    }
                }
            }
            // Step 6: Save modifications
            watermarker.save("path/to/output/spreadsheet_watermarked.xlsx");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // Step 7: Close resources
            // (Ensure resources are closed)
        }
    }
}

Częste problemy i rozwiązania

IssueWhy it HappensFix
Zaszyfrowany skoroszyt jest pomijanySDK nie może odczytać zaszyfrowanych plików bez hasła.Najpierw odszyfruj plik lub podaj hasło za pomocą SpreadsheetLoadOptions.setPassword("pwd").
Znak wodny nie jest widoczny na niektórych arkuszachArkusz może mieć niestandardowy widok lub ochronę, które ukrywają obiekty rysunkowe.Wyłącz ochronę arkusza przed dodaniem znaku wodnego, a następnie w razie potrzeby ponownie ją włącz.
Spowolnienie wydajności przy dużych plikachŁadowanie całego skoroszytu do pamięci może być kosztowne.Przetwarzaj arkusze w partiach lub zwiększ rozmiar sterty JVM (-Xmx2g).
Obrazowy znak wodny jest zniekształconyNieprawidłowe ustawienia skalowania.Użyj ImageWatermark z wyraźnie określonymi parametrami szerokości/wysokości, aby zachować proporcje.

Najczęściej zadawane pytania

P: Czy mogę dodać obrazowy znak wodny zamiast tekstowego?
O: Tak. Użyj ImageWatermark z SDK i przekaż instancję java.awt.Image. To obejmuje scenariusz add image watermark java.

P: Jak kontrolować pozycję znaku wodnego?
O: Klasa TextWatermark (lub ImageWatermark) udostępnia właściwości takie jak setHorizontalAlignment, setVerticalAlignment oraz setOpacity, aby precyzyjnie dostosować położenie i przezroczystość.

P: Czy można dodać znak wodny do wielu plików Excel w jednym uruchomieniu?
O: Oczywiście. Owiń cały przepływ pracy w pętlę for, która iteruje po katalogu plików, ponownie używając tej samej instancji TextWatermark.

P: Co się stanie, jeśli arkusz zawiera wykresy?
O: Wykresy są traktowane jako oddzielne obiekty rysunkowe; znak wodny jest nakładany na płótno arkusza, więc wykresy pozostają niezmienione, ale są nadal pokryte półprzezroczystym stemplem.

P: Czy mogę usunąć znak wodny dodany wcześniej?
O: SDK zawiera metody watermarker.remove(watermark), ale musisz zachować referencję do oryginalnego obiektu znaku wodnego lub wyszukać go po tekście/treści, aby go zidentyfikować.


Ostatnia aktualizacja: 2026-03-27
Testowano z: GroupDocs.Watermark 23.12 (Java)
Autor: GroupDocs