GroupDocs.Watermark Java を使用して Excel にウォーターマークを追加
Excel ファイルにウォーターマークを付けることは、機密データの保護、レポートのブランディング、またはプロフェッショナルな印象を与える上で大きな効果があります。このチュートリアルでは、GroupDocs.Watermark for Java を使って Excel にウォーターマークを追加 する方法を、明確な説明、実際のユースケース、よくある落とし穴の回避策とともに学びます。
クイック回答
- 必要なライブラリは何ですか? GroupDocs.Watermark for Java(最新バージョン)。
- サポートされている Excel フォーマットは? .xlsx および .xls ファイル(暗号化されていない)。
- 画像ウォーターマークを追加できますか? はい – SDK はテキストと画像の両方のウォーターマークをサポートしています。
- 本番環境でライセンスが必要ですか? トライアル以外のデプロイには商用ライセンスが必要です。
- 実装にどれくらい時間がかかりますか? 基本的なテキストウォーターマークで約 10〜15 分です。
add watermark to excel とは何ですか?
Excel ブックにウォーターマークを追加することは、各ワークシートや埋め込みドキュメントに目に見える(または半透明の)テキストまたは画像をスタンプすることを意味します。これにより、所有権を主張したり、機密性を示したり、ファイル全体でブランディングを強化したりできます。
なぜ GroupDocs.Watermark for Java を使用するのか?
GroupDocs.Watermark は、Office Open XML 構造の複雑さを抽象化したハイレベル API を提供します。次のことが可能です:
- 単一の呼び出しで�数のワークシートにウォーターマークを適用します。
- 埋め込み添付ファイル(例:埋め込み PDF)を自動的に処理します。
- 元の書式や数式を保持します。
- テキストと画像の両方のウォーターマークを扱えます(例:add image watermark java)。
前提条件
- Java 開発環境 – Java 8 以上(JDK)。
- GroupDocs.Watermark for Java SDK – 最新リリースはhereからダウンロードしてください。
- IDE – IntelliJ IDEA、Eclipse、または任意の Java 対応エディタ。
- サンプルスプレッドシート – 保護したい .xlsx ファイル。
SDK は Maven、Gradle、または JAR ファイルを手動でクラスパスに配置することでプロジェクトに追加できます。
パッケージのインポート
これらのインポートにより、コアのウォーターマーキングクラス、スプレッドシート処理、フォントユーティリティにアクセスできます。
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 の手順 – ステップバイステップガイド
以下は実用的な番号付きウォークスルーで、Java で スプレッドシートにウォーターマークを付ける方法 を正確に示します。各ステップには簡単な説明と、変更なしの元コードブロックが続きます。
手順 1: ウォーターマークオブジェクトの設定
Why? このオブジェクトは適用するスタンプの視覚的外観を定義します。
TextWatermark watermark = new TextWatermark("Confidential", new Font("Arial", 19));
手順 2: スプレッドシートのロード
Why? ワークブックを開くことで SDK が編集用のハンドルを取得します。
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("your-file-path.xlsx", loadOptions);
手順 3: スプレッドシートのコンテンツとワークシートへのアクセス
Why? Excel ファイルは多数のシートを含む可能性があるため、各シートを反復処理する必要があります。
SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet worksheet : content.getWorksheets()) {
// Process each worksheet
}
手順 4: 各ワークシートの添付ファイルをループ処理
Why? 一部のワークシートには他のドキュメント(例:PDF)が埋め込まれています。これらを処理することで、ファイル全体に一貫したウォーターマークを適用できます。
for (SpreadsheetAttachment attachment : worksheet.getAttachments()) {
IDocumentInfo info = attachment.getDocumentInfo();
if (info.getFileType() != FileType.Unknown && !info.isEncrypted()) {
// Process the supported attachment
}
}
手順 5: 各添付ドキュメントにウォーターマークを適用
Why? すべての埋め込みファイルに同じ「Confidential」スタンプを付けたいからです。
Watermarker attachedWatermarker = attachment.createWatermarker();
attachedWatermarker.add(watermark);
attachment.updateContent(attachedWatermarker);
attachedWatermarker.close();
手順 6: すべての変更を保存
Why? 変更を新しいワークブックに永続化します。
watermarker.save("your-output-file.xlsx");
手順 7: リソースを閉じる
Why? 大規模なワークブックを処理する際に、リソース解放でメモリリークを防止します。
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: はい。SDK の ImageWatermark を使用し、java.awt.Image インスタンスを渡してください。これにより add image watermark java のシナリオに対応できます。
Q: ウォーターマークの位置を制御するには?
A: TextWatermark(または ImageWatermark)クラスは setHorizontalAlignment、setVerticalAlignment、setOpacity などのプロパティを提供し、配置や透明度を細かく調整できます。
Q: 1 回の実行で複数の Excel ファイルにウォーターマークを付けることは可能ですか?
A: もちろん可能です。ディレクトリ内のファイルを走査する for ループでワークフロー全体を囲み、同じ TextWatermark インスタンスを再利用してください。
Q: スプレッドシートにチャートが含まれている場合はどうなりますか?
A: チャートは別個の描画オブジェクトとして扱われます。ウォーターマークはワークシートのキャンバスに適用されるため、チャート自体は影響を受けませんが、半透明のスタンプで覆われます。
Q: 以前に追加したウォーターマークを削除できますか?
A: SDK には watermarker.remove(watermark) メソッドがありますが、元のウォーターマークオブジェクトへの参照を保持するか、テキスト/コンテンツで検索して特定する必要があります。
最終更新日: 2026-03-27
テスト済みバージョン: GroupDocs.Watermark 23.12 (Java)
作者: GroupDocs