Java 在Excel中添加水印 电子表格添加水印

来源:搜狗指南时间:2022-04-18 19:07:52

    Javaexcel中添加水印  电子表格添加水印。在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果。下面通过Java程序代码介绍具体实现方法。

    工具/材料
    测试文档:officeExcel2013
    编译环境:IntelliJIDEA2018
    JDK版本:1.8.0
    Excel库:spire.xls.jar3.9.1
    操作方法
    01
    在IDEA程序项目文件夹下存储一个2013版的Excel的测试文件。如下图:
    02
    在idea中键入如下代码:
    importcom.spire.xls.*;
    importjava.awt.*;
    importjava.awt.image.BufferedImage;
    importstaticjava.awt.image.BufferedImage.TYPE_INT_ARGB;
    publicclassTextWatermark{
    publicstaticvoidmain(String[]args){
    //加载Excel测试文档
    Workbookwb=newWorkbook();
    wb.loadFromFile("test.xlsx");
    //设置文本和字体大小
    Fontfont=newFont("仿宋",Font.PLAIN,40);
    for(inti=0;i<wb.getWorksheets().getCount();i++)
    {
    Worksheetsheet=wb.getWorksheets().get(i);
    //调用DrawText()方法插入图片
    BufferedImageimgWtrmrk=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);

    }
    privatestaticBufferedImagedrawText(Stringtext,Fontfont,ColortextColor,ColorbackColor,doubleheight,doublewidth)
    {
    //定义图片宽度和高度
    BufferedImageimg=newBufferedImage((int)width,(int)height,TYPE_INT_ARGB);
    Graphics2DloGraphic=img.createGraphics();
    //获取文本size
    FontMetricsloFontMetrics=loGraphic.getFontMetrics(font);
    intliStrWidth=loFontMetrics.stringWidth(text);
    intliStrHeight=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();
    returnimg;
    }
    }
    03
    运行程序,生成文档,水印效果如图,但是需要注意的是:在添加完水印效果后,查看文档时,在“普通视图”水印不可见,需在“页面布局”模式或“打印预览”模式下查看。
文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:9145908@qq.com