Java 给Excel添加多行文本水印 Java如何给Excel文档添加多行文字水印

来源:搜狗指南时间:2022-03-28 16:04:24

   Java 给Excel添加多行文本水印  Java如何给Excel文档添加多行文字水印。在Excel中添加水印可添加单一水印效果,即水印是以单个文本字样来呈现;也可添加多个平铺水印效果,即水印是以多个文本字样来页面中平铺。详细内容见下文。

    工具/材料
    Excel测试文档:.xlsx2013版
    编译环境:IntelliJIDEA2018
    Exceljar包:Java系列freespire.xls.jar3.9.1
    JDK版本:1.8.0
    操作方法
    01
    在IDEA项目文件夹下存入用于测试的Excel文件,如本次文件路径:C:\Users\Administrator\IdeaProjects\TextWatermark_XLS(文件路径可以自定义为其他路径)
    02
    在程序中导入spire.xls.jar文件,如下图:
    03
    键入如下代码:
    importcom.spire.xls.*;
    importjava.awt.*;
    importjava.awt.image.BufferedImage;
    importstaticjava.awt.image.BufferedImage.TYPE_INT_ARGB;
    publicclassTiledWatermark{
    publicstaticvoidmain(String[]args){
    //加载Excel测试文档
    Workbookwb=newWorkbook();
    wb.loadFromFile("test.xlsx");
    //设置文本和字体大小
    Fontfont=newFont("仿宋",Font.PLAIN,25);
    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().setCenterHeaderImage(imgWtrmrk);

    sheet.getPageSetup().setCenterHeader("&G");
    //将显示模式设置为Layout
    sheet.setViewMode(ViewMode.Layout);
    }
    //保存文档
    wb.saveToFile("TiledWatermark.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)/6,((int)height-liStrHeight)/6);
    loGraphic.drawString(text,((int)width-liStrWidth)/3,((int)height-liStrHeight)/3);
    loGraphic.drawString(text,((int)width-liStrWidth)/2,((int)height-liStrHeight)/2);
    loGraphic.dispose();
    returnimg;
    }
    }
    04
    运行程序,生成如下Excel文档。多行水印效果如图:
文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com