Java 在Excel中添加水印

在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果。本文通过Java程序代码介绍具体实现方法。
程序环境:

  • 测试文档:Office Excel 2013
  • 编译环境:IntelliJ IDEA 2018
  • JDK版本:1.8.0
  • Excel库:Java系列spire.xls.jar 3.9.1(本次测试使用免费版)

Java全部测试代码

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测试文档
        Workbook wb = new Workbook();
        wb.loadFromFile("test.xlsx");

        //设置文本和字体大小
        Font font = new Font("仿宋", Font.PLAIN, 40);

        for (int i =0;i<wb.getWorksheets().getCount();i++)
        {
            Worksheet sheet = wb.getWorksheets().get(i);
            //调用DrawText() 方法插入图片
            BufferedImage imgWtrmrk = drawText("内部专用", font, Color.pink, Color.white, sheet.getPageSetup().getPageHeight(), sheet.getPageSetup().getPageWidth());

            //将图片设置为页眉
            sheet.getPageSetup().setLeftHeaderImage(imgWtrmrk);
            sheet.getPageSetup().setLeftHeader("&G");


            //将显示模式设置为Layout
            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;
    }
}
水印效果图

以上是本文关于Java 给Excel表格添加水印的方法。也可公众号搜索【Office文档开发】查看更多操作Office文档的方法。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 Microsoft Excel没有直接的方法内置水印在Excel工作表中,我们可通过添加页眉页脚功能,将图片...
    Tina_Tang阅读 7,455评论 0 1
  • 在日常生活中,我们经常能看到许多广告文件的字体后面印着公司的名称或logo,也能在一些保密文件的正文后看到“机密”...
    Tina_Tang阅读 5,344评论 0 1
  • 在日常办公中,PDF文件的使用越来越普遍。为了防止自己撰写的文件内容被抄袭或者被他人盗用,给PDF文件添加上水印是...
    Tina_Tang阅读 4,529评论 0 0
  • Excel是办公室自动化中非常重要的一款软件,具有强大的数据分析和处理功能。其中,Excel公式(包括函数)...
    Tina_Tang阅读 4,200评论 0 1
  • 需求介绍 我有一个含有大量数据资料的Excel文档,现需要对其中的一个或多个单元格的数据进行修改。请问如何才能用J...
    Tina_Tang阅读 4,642评论 0 0

友情链接更多精彩内容