JavaでExcelスプレッドシートに


マイクロソフトExcelの組み込み機能をExcelシートで透かしを追加する必要はありません.しかし、透かしの外観をシミュレートするために、ワークシートにヘッダー画像やワードアートを追加するなど、いくつかのトリッキーな方法があります.本稿では、ワークシートサイズに基づいてイメージを作成し、それをSPIREを使ってヘッダー画像として設定する方法を紹介します.Java用のXLS.
セルが固体色で満たされるならば、ヘッダーイメージがおおわれることに注意してください.このように、透かしの外観をシミュレートするためにヘッダ像を加えることは、透かしが現れるセルが背景色を有しないことを必要とする.

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

出力