スプレッドシートにウォーターマークを埋め込むことで、機密データを保護し、文書の所有権を示すことができます。 Conholdate.Total for Java は、数行のコードだけで Java で Excel にウォーターマークを挿入できるシンプルな API を提供します。このガイドでは、必要なセットアップ、完全な実装、および主要な構成オプションについて説明し、Excel ブックを効率的に保護できるようにします。
JavaでExcelに透かしを挿入する方法 - ステップバイステップ
ExcelLoadOptionsでブックをロードする
- Excelブックをロードする:
WatermarkerとExcelLoadOptionsを組み合わせてファイルを開きます。
Watermarker watermarker = new Watermarker(inputPath, new ExcelLoadOptions());
Watermarker クラスは API reference に記載されています。ExcelLoadOptions を使用してロードすると、メモリ使用量を制御でき、大きなブックにとって重要です。
テキスト透かしの作成とスタイリング
- テキスト透かしを作成: フォント、色、不透明度、回転、配置を定義します。
Font font = new Font("Arial", 36);
TextWatermark watermark = new TextWatermark("CONFIDENTIAL", font);
watermark.setColor(Color.RED);
watermark.setOpacity(0.3);
watermark.setRotationAngle(45);
watermark.setHorizontalAlignment(HorizontalAlignment.Center);
watermark.setVerticalAlignment(VerticalAlignment.Center);
opacity を 0.3 に設定すると透かしが半透明になり、45 度の回転によりシート全体に対角線上に配置されます。これらの値は、ブランドガイドラインやコンプライアンス要件に合わせて調整できます。
すべてのワークシートに透かしを適用する
- ワークブックに透かしを追加する:
addメソッドは、単一の呼び出しで全てのワークシートに適用します。
watermarker.add(watermark);
ワークシートごとの制御が必要な場合は、watermarker.getWorksheets() で個々のワークシートを取得し、各シートに対して add を個別に呼び出すことができます。
Save the Watermarked Workbook
- Save the watermarked workbook:
ExcelSaveOptionsを選択して出力形式を制御し、元のメタデータを保持します。
watermarker.save(outputPath, new ExcelSaveOptions());
ExcelSaveOptions オブジェクトを使用すると、元のファイルバージョンを保持するか、最新の XLSX 標準にアップグレードするかを指定できます。
メモリリークを防ぐためにリソースを解放する
- Watermarker を閉じる: バッチで多数のファイルを処理する際など、メモリリークを防ぐためにリソースを解放します。
watermarker.close();
Watermarker を閉じることで、保留中の書き込み操作もフラッシュされ、出力ファイルが破損しないようにします。
これらの手順は、外観とパフォーマンスを制御しながら、JavaでExcelにウォーターマークを挿入する方法を示しています。
完全なコード例:JavaでExcelに透かしを挿入する - 完全なJava透かし
以下のコードは、ワークブックの読み込みから結果の保存までの全プロセスを示しています。
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.TextWatermark;
import com.groupdocs.watermark.common.Font;
import com.groupdocs.watermark.common.Color;
import com.groupdocs.watermark.contents.HorizontalAlignment;
import com.groupdocs.watermark.contents.VerticalAlignment;
import com.groupdocs.watermark.options.load.ExcelLoadOptions;
import com.groupdocs.watermark.options.save.ExcelSaveOptions;
public class ExcelWatermarkExample {
public static void main(String[] args) {
String inputPath = "input.xlsx";
String outputPath = "output_watermarked.xlsx";
Watermarker watermarker = null;
try {
// Load the Excel workbook (works for both XLS and XLSX)
ExcelLoadOptions loadOptions = new ExcelLoadOptions();
// For very large workbooks you can enable streaming mode:
// loadOptions.setLoadAllWorksheets(false);
watermarker = new Watermarker(inputPath, loadOptions);
// Create a text watermark with desired appearance
Font font = new Font("Arial", 36);
TextWatermark watermark = new TextWatermark("CONFIDENTIAL", font);
watermark.setColor(Color.RED);
watermark.setOpacity(0.3); // 30% opacity
watermark.setRotationAngle(45); // diagonal
watermark.setHorizontalAlignment(HorizontalAlignment.Center);
watermark.setVerticalAlignment(VerticalAlignment.Center);
// Apply the watermark to all worksheets
watermarker.add(watermark);
// Save the watermarked workbook
ExcelSaveOptions saveOptions = new ExcelSaveOptions();
watermarker.save(outputPath, saveOptions);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (watermarker != null) {
watermarker.close();
}
}
}
}
注: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパス(
input.xlsx、output_watermarked.xlsx)を実際のファイル位置に合わせて更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメントをご参照いただくか、サポートチームにお問い合わせください。
環境の準備
Maven リポジトリと依存関係を追加
Conholdate Maven リポジトリと SDK の依存関係を 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>
最新の JAR は、ダウンロードページ から直接ダウンロードできます。SDK は Java 8 以上が必要で、IntelliJ IDEA や Eclipse などの対応 IDE を使用するとデバッグが容易になります。
ライセンスの構成(本番使用)
本番環境で透かしコードを実行する前に、ライセンス ファイルを適用してください:
import com.groupdocs.watermark.License;
License license = new License();
license.setLicense("path/to/Conholdate.Total.Java.lic");
評価用の一時ライセンスは一時ライセンスページで入手できます。長期プロジェクトの場合は、価格ページを確認して、適切なプランを選択してください。
Conholdate.Total for Java が Excel の透かしに適している理由
包括的な XLS/XLSX サポート
このライブラリは、レガシーな XLS と最新の XLSX フォーマットの両方を変換なしで処理し、数式、チャート、マクロを保持します。
大規模ワークブックの効率的なストリーミングモード
数千行を含むワークブックを扱う場合は、loadOptions.setLoadAllWorksheets(false) を設定してストリーミングを有効にします。これによりメモリ消費が劇的に削減されます。
リッチ透かしスタイリングオプション
フォントファミリー、サイズ、カラー、不透明度、回転角度、配置を制御できます。以下の表は、最も一般的に調整されるプロパティをまとめたものです。
| プロパティ | 例の値 | 影響 |
|---|---|---|
| Font | new Font("Arial", 36) | 透かしテキストの視覚的スタイルを決定します。 |
| Color | Color.RED | 透かしの色を設定します。任意のRGB値が使用可能です。 |
| Opacity | 0.3 (30%) | 透明度を制御します。値が低いほど透かしが目立ちにくくなります。 |
| Rotation Angle | 45 degrees | 透かしを対角線上に配置し、カバー範囲を向上させます。 |
| Horizontal Alignment | HorizontalAlignment.Center | 透かしを水平方向に配置します。 |
| Vertical Alignment | VerticalAlignment.Center | 透かしを垂直方向に配置します。 |
ワークシートの自動カバレッジ
watermarker.add(watermark) を1回呼び出すだけで、透かしがすべてのシートに適用され、繰り返しループを書く手間が省けます。
Simple Save Options
ExcelSaveOptions は、元のファイル形式を保持するか、最新の XLSX バージョンにアップグレードするかを選択でき、マクロを保持するかどうかも指定できます。
これらすべての機能は、公式ドキュメントで詳細に説明されています。
結論
このチュートリアルでは、Conholdate.Total for Java の強力な機能を使用して、Java で Excel に透かしを挿入する方法を学びました。ステップバイステップのガイドに従うことで、カスタムテキストでスプレッドシートを保護し、外観を制御し、大きなファイルを効率的に処理できます。実運用での展開にはライセンス版が必要です。価格は価格ページで確認でき、SDK を評価するために一時ライセンスページから一時ライセンスを取得してください。
よくある質問
テキストの代わりに画像の透かしを追加するにはどうすればよいですか?
ImageWatermarkクラスを使用し、不透明度と配置を設定し、テキストの例と同様にWatermarkerインスタンスに追加します。画像は PNG、JPEG、または BMP のいずれかにでき、ワークシートに合わせてサイズを調整することもできます。詳細は API リファレンス を参照してください。ワークブックをPDFに変換した後でも透かしは表示されますか?
はい。透かしはワークブックに埋め込まれており、Conholdate.Total for Java を使用して後で PDF などの任意の形式に変換した場合でも表示されます。変換プロセスは透かしを含むすべての視覚要素を保持します。ワークシートごとに透かしを制御できますか?
SDK はデフォルトですべてのワークシートに透かしを適用しますが、watermarker.getWorksheets().get_Item(index)を使用して個々のワークシートをロードし、必要に応じて各シートでaddを呼び出すことができます。これにより、シートごとに異なるブランディングが必要なレポートに対して細かな制御が可能になります。開発およびテストにライセンスは必要ですか?
評価用の一時ライセンスは、一時ライセンスページで利用できます。商用利用の場合は、価格ページからフルライセンスを購入してください。ライセンス ファイルは、Setup セクションに示されているように、実行時にロードする必要があります。
