JavaでExcelスプレッドシートに
マイクロソフトExcelの組み込み機能をExcelシートで透かしを追加する必要はありません.しかし、透かしの外観をシミュレートするために、ワークシートにヘッダー画像やワードアートを追加するなど、いくつかのトリッキーな方法があります.本稿では、ワークシートサイズに基づいてイメージを作成し、それをSPIREを使ってヘッダー画像として設定する方法を紹介します.Java用のXLS.
セルが固体色で満たされるならば、ヘッダーイメージがおおわれることに注意してください.このように、透かしの外観をシミュレートするためにヘッダ像を加えることは、透かしが現れるセルが背景色を有しないことを必要とする.
Mavenを使用する場合は、プロジェクトのPOMに次のコードを追加することで、アプリケーション内のjarファイルを簡単にインポートできます.XMLファイル.非Mavenプロジェクトについては、this linkからJARファイルをダウンロードして手動でプログラムの依存関係として追加してください.
セルが固体色で満たされるならば、ヘッダーイメージがおおわれることに注意してください.このように、透かしの外観をシミュレートするためにヘッダ像を加えることは、透かしが現れるセルが背景色を有しないことを必要とする.
spireのインストールXLSジャー
Mavenを使用する場合は、プロジェクトのPOMに次のコードを追加することで、アプリケーション内のjarファイルを簡単にインポートできます.XMLファイル.非Mavenプロジェクトについては、this linkからJARファイルをダウンロードして手動でプログラムの依存関係として追加してください.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId> e-iceblue </groupId>
<artifactId>spire.xls</artifactId>
<version>4.8.1</version>
</dependency>
</dependencies>
コードの使用
import com.spire.xls.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import static java.awt.image.BufferedImage.TYPE_INT_ARGB;
public class AddWatermark {
public static void main(String[] args) throws IOException {
//Create a Workbook object and load the sample Excel file
Workbook workbook = new Workbook();
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.xlsx");
//Create a font
Font font = new Font("Arial", Font.PLAIN, 50);
//Define watermark text
String watermarkText = "Internal Use";
//Loop through the worksheets
for (Object object : (Iterable) workbook.getWorksheets()) {
//Get the specific worksheet
Worksheet sheet = (Worksheet) object;
//Call createWatermarkImage() method to create a watermark image
BufferedImage image= createWatermarkImage(sheet, watermarkText, font, Color.pink);
//Set the image as header image
sheet.getPageSetup().setLeftHeaderImage(image);
sheet.getPageSetup().setLeftHeader("&G");
//Set the view mode as Layout
sheet.setViewMode(ViewMode.Layout);
}
//Save the document
workbook.saveToFile("output/Watermark.xlsx", ExcelVersion.Version2013);
}
private static BufferedImage createWatermarkImage(Worksheet sheet, String text, Font font, Color textColor) {
//Create a Graphics2D object
double width = 1.3 * (sheet.getPageSetup().getPageWidth() - 2 * 72 * sheet.getPageSetup().getLeftMargin());
double height = 1.3 * (sheet.getPageSetup().getPageHeight() - 72 * sheet.getPageSetup().getBottomMargin());
BufferedImage img = new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);
Graphics2D graphic = img.createGraphics();
//Measure the string size
FontMetrics fontMetrics = graphic.getFontMetrics(font);
int strWidth = fontMetrics.stringWidth(text);
int strHeight = fontMetrics.getAscent();
//Draw string on the graphic
graphic.setFont(font);
graphic.setColor(textColor);
graphic.drawString(text, ((int) width - strWidth) / 2, ((int) height + strHeight) / 2);
graphic.dispose();
return img;
}
}
出力
Reference
この問題について(JavaでExcelスプレッドシートに), 我々は、より多くの情報をここで見つけました https://dev.to/eiceblue/add-watermark-to-excel-spreadsheets-in-java-3g78テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol