Java Excel에 워터마크 설정

워드에서는 처음부터 워터마크 기능이 존재합니다만, 엑셀에서는 워터마크 기능이 존재하지 않기 때문에, 조금 어려울까라고 생각하고 있습니까? 사실 Spire.XLS for Java라는 라이브러리를 통해 쉽게 설정할 수 있습니다.

아래 준비



1.E-iceblue 공식 사이트에서 Free Spire. XLS for Java l 무료 버전을 다운로드하십시오.



2. IDE를 시작하여 새 프로젝트를 만든 다음 설치된 파일에 있던 적절한 Spire.XLS.jar를 참조에 추가합니다.


import com.spire.xls.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import static java.awt.image.BufferedImage.TYPE_INT_ARGB;

public class ExcelWatermark {
    public static void main(String[] args)  {

        //Workbook objectを作成します。
        Workbook workbook = new Workbook();
        workbook.loadFromFile("Sample.xlsx");

        //テキストを設定します。
        Font font = new Font("Arial", Font.PLAIN, 40);
        String watermark = "Draft Version";

        for (Worksheet sheet : (Iterable) workbook.getWorksheets()) {
            //Call DrawText() method to insert the image
            BufferedImage imgWtrmrk = drawText(watermark, font, Color.pink, Color.white, sheet.getPageSetup().getPageHeight(), sheet.getPageSetup().getPageWidth());

            //イメージをヘッダーに設定します。
            sheet.getPageSetup().setLeftHeaderImage(imgWtrmrk);
            sheet.getPageSetup().setLeftHeader("&G");

            // ビューモードをLayoutに設定します。
            sheet.setViewMode(ViewMode.Layout);
        }

        //保存します。
        workbook.saveToFile("Watermark.xlsx", ExcelVersion.Version2010);
    }
    private static BufferedImage drawText (String text, Font font, Color textColor, Color backColor,double height, double width)
    {
        //イメージの幅と長さを設定します。
        BufferedImage img = new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);
        Graphics2D loGraphic = img.createGraphics();

        //フォントを設定します。
        FontMetrics loFontMetrics = loGraphic.getFontMetrics(font);
        int liStrWidth = loFontMetrics.stringWidth(text);
        int liStrHeight = loFontMetrics.getHeight();

        //テキストのフォントを設定します。
        loGraphic.setColor(backColor);
        loGraphic.fillRect(0, 0, (int) width, (int) height);
        loGraphic.translate(((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);
        loGraphic.rotate(Math.toRadians(-45));

        loGraphic.translate(-((int) width - liStrWidth) / 2, -((int) height - liStrHeight) / 2);
        loGraphic.setFont(font);
        loGraphic.setColor(textColor);
        loGraphic.drawString(text, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 2);
        loGraphic.dispose();
        return img;
    }
}

 실행 결과





 

좋은 웹페이지 즐겨찾기