Java 在Excel中添加水印

在Excel中沒(méi)有直接添加水印的功能,但依舊可以通過(guò)一定方式來(lái)實(shí)現(xiàn)類(lèi)似水印效果。本文通過(guò)Java程序代碼介紹具體實(shí)現(xiàn)方法。
程序環(huán)境:

  • 測(cè)試文檔:Office Excel 2013
  • 編譯環(huán)境:IntelliJ IDEA 2018
  • JDK版本:1.8.0
  • Excel庫(kù):Java系列spire.xls.jar 3.9.1(本次測(cè)試使用免費(fèi)版)

Java全部測(cè)試代碼

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

public class TextWatermark {
    public static void main(String[] args) {
        //加載Excel測(cè)試文檔
        Workbook wb = new Workbook();
        wb.loadFromFile("test.xlsx");

        //設(shè)置文本和字體大小
        Font font = new Font("仿宋", Font.PLAIN, 40);

        for (int i =0;i<wb.getWorksheets().getCount();i++)
        {
            Worksheet sheet = wb.getWorksheets().get(i);
            //調(diào)用DrawText() 方法插入圖片
            BufferedImage imgWtrmrk = drawText("內(nèi)部專(zhuān)用", font, Color.pink, Color.white, sheet.getPageSetup().getPageHeight(), sheet.getPageSetup().getPageWidth());

            //將圖片設(shè)置為頁(yè)眉
            sheet.getPageSetup().setLeftHeaderImage(imgWtrmrk);
            sheet.getPageSetup().setLeftHeader("&G");


            //將顯示模式設(shè)置為L(zhǎng)ayout
            sheet.setViewMode(ViewMode.Layout);
        }

        //保存文檔
        wb.saveToFile("TextWatermark.xlsx", ExcelVersion.Version2013);
    }
    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();

        //獲取文本size
        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;
    }
}
水印效果圖

以上是本文關(guān)于Java 給Excel表格添加水印的方法。也可公眾號(hào)搜索【Office文檔開(kāi)發(fā)】查看更多操作Office文檔的方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 Microsoft Excel沒(méi)有直接的方法內(nèi)置水印在Excel工作表中,我們可通過(guò)添加頁(yè)眉頁(yè)腳功能,將圖片...
    Tina_Tang閱讀 2,696評(píng)論 0 1
  • 在日常生活中,我們經(jīng)常能看到許多廣告文件的字體后面印著公司的名稱(chēng)或logo,也能在一些保密文件的正文后看到“機(jī)密”...
    Tina_Tang閱讀 1,633評(píng)論 0 1
  • 在日常辦公中,PDF文件的使用越來(lái)越普遍。為了防止自己撰寫(xiě)的文件內(nèi)容被抄襲或者被他人盜用,給PDF文件添加上水印是...
    Tina_Tang閱讀 1,013評(píng)論 0 0
  • Excel是辦公室自動(dòng)化中非常重要的一款軟件,具有強(qiáng)大的數(shù)據(jù)分析和處理功能。其中,Excel公式(包括函數(shù))...
    Tina_Tang閱讀 1,018評(píng)論 0 1
  • 需求介紹 我有一個(gè)含有大量數(shù)據(jù)資料的Excel文檔,現(xiàn)需要對(duì)其中的一個(gè)或多個(gè)單元格的數(shù)據(jù)進(jìn)行修改。請(qǐng)問(wèn)如何才能用J...
    Tina_Tang閱讀 1,266評(píng)論 0 0

友情鏈接更多精彩內(nèi)容