Добавить водяной знак в Excel с помощью GroupDocs.Watermark Java

Нанесение водяного знака на файлы Excel может стать переломным моментом — будь то защита конфиденциальных данных, брендинг ваших отчетов или просто добавление профессионального штриха. В этом руководстве вы узнаете, как добавить водяной знак в Excel таблицы с помощью GroupDocs.Watermark для Java, с понятными объяснениями, реальными примерами использования и советами по избежанию распространенных ошибок.

Быстрые ответы

  • Какая библиотека нужна? GroupDocs.Watermark for Java (latest version).
  • Какие форматы Excel поддерживаются? .xlsx и .xls файлы (без шифрования).
  • Можно ли добавить изображение в качестве водяного знака? Да — SDK поддерживает как текстовые, так и графические водяные знаки.
  • Нужна ли лицензия для продакшн? Для не‑тестовых развертываний требуется коммерческая лицензия.
  • Сколько времени занимает внедрение? Около 10‑15 минут для базового текстового водяного знака.

Что такое добавить водяной знак в Excel?

Добавление водяного знака в книгу Excel означает наложение видимого (или полупрозрачного) текста или изображения на каждый лист или вложенный документ. Это помогает заявить о праве собственности, указать конфиденциальность или усилить брендинг по всему файлу.

Почему использовать GroupDocs.Watermark для Java?

GroupDocs.Watermark предоставляет высокоуровневый API, который абстрагирует сложность работы со структурами Office Open XML. Он позволяет:

  • Применять водяные знаки к нескольким листам в одном вызове.
  • Автоматически обрабатывать вложенные вложения (например, встроенные PDF).
  • Сохранять оригинальное форматирование и формулы.
  • Работать как с текстовыми, так и с графическими водяными знаками (например, add image watermark java).

Предварительные требования

  • Java Development Environment – Java 8 или выше (JDK).
  • GroupDocs.Watermark for Java SDK – скачайте последнюю версию по ссылке here.
  • IDE – IntelliJ IDEA, Eclipse или любой совместимый с Java редактор.
  • Sample spreadsheet – файл .xlsx, который вы хотите защитить.

Вы можете добавить SDK в свой проект через Maven, Gradle или вручную разместив JAR‑файлы в classpath.

Импорт пакетов

Эти импорты дают доступ к основным классам для водяных знаков, работе с таблицами и утилитам шрифтов.

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;

Как watermark spreadsheet – Пошаговое руководство

Ниже представлена практическая пошаговая инструкция, показывающая точно how to watermark spreadsheet файлы с помощью Java. Каждый шаг включает короткое объяснение, за которым следует оригинальный блок кода (без изменений).

Шаг 1: Настройте объект водяного знака

Почему? Этот объект определяет визуальный вид штампа, который вы будете применять.

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

Шаг 2: Загрузите таблицу

Почему? Открытие книги предоставляет SDK возможность редактировать.

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

Шаг 3: Доступ к содержимому таблицы и листам

Почему? Файлы Excel могут содержать множество листов; необходимо пройтись по каждому.

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

Шаг 4: Перебор вложений в каждом листе

Почему? Некоторые листы содержат вложенные документы (например, PDF). Их обработка обеспечивает единый водяной знак по всему файлу.

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

Шаг 5: Добавьте водяной знак к каждому вложенному документу

Почему? Вы хотите, чтобы на каждом вложенном файле был одинаковый штамп «Confidential».

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

Шаг 6: Сохраните все изменения

Почему? Сохранить изменения в новую книгу.

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

Шаг 7: Закройте ресурсы

Почему? Освобождение ресурсов предотвращает утечки памяти, особенно при обработке больших книг.

watermarker.close();

Объединяем всё: Полный пример

Следующий класс объединяет все шаги в одну исполняемую программу. Не изменяйте блок кода — он идентичен оригинальному примеру.

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)
        }
    }
}

Распространённые проблемы и решения

ПроблемаПочему происходитРешение
Зашифрованная книга пропускаетсяSDK не может читать зашифрованные файлы без пароля.Сначала расшифруйте файл или укажите пароль через SpreadsheetLoadOptions.setPassword("pwd").
Водяной знак не виден на некоторых листахЛист может иметь пользовательский вид или защиту, скрывающую графические объекты.Отключите защиту листа перед добавлением водяного знака, затем при необходимости включите её снова.
Снижение производительности на больших файлахЗагрузка всей книги в память может быть ресурсоёмкой.Обрабатывайте листы партиями или увеличьте размер кучи JVM (-Xmx2g).
Изображение водяного знака искаженоНеправильные настройки масштабирования.Используйте ImageWatermark с явными параметрами ширины/высоты для сохранения пропорций.

Часто задаваемые вопросы

Q: Можно ли добавить изображение в качестве водяного знака вместо текста?
A: Да. Используйте ImageWatermark из SDK и передайте экземпляр java.awt.Image. Это покрывает сценарий add image watermark java.

Q: Как контролировать позицию водяного знака?
A: Класс TextWatermark (или ImageWatermark) предоставляет свойства, такие как setHorizontalAlignment, setVerticalAlignment и setOpacity, позволяющие точно настроить размещение и прозрачность.

Q: Можно ли добавить водяной знак к нескольким файлам Excel за один запуск?
A: Конечно. Оберните весь процесс в цикл for, который проходит по каталогу файлов, повторно используя один экземпляр TextWatermark.

Q: Что происходит, если таблица содержит диаграммы?
A: Диаграммы рассматриваются как отдельные графические объекты; водяной знак наносится на канву листа, поэтому диаграммы остаются нетронутыми, но всё равно покрыты полупрозрачным штампом.

Q: Можно ли удалить ранее добавленный водяной знак?
A: SDK включает методы watermarker.remove(watermark), но вам необходимо сохранить ссылку на оригинальный объект водяного знака или выполнить поиск по тексту/содержимому, чтобы его идентифицировать.


Последнее обновление: 2026-03-27
Тестировано с: GroupDocs.Watermark 23.12 (Java)
Автор: GroupDocs