Java 在excel中添加水印 电子表格添加水印。在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果。下面通过Java程序代码介绍具体实现方法。
工具/材料
测试文档:
officeExcel2013
编译环境:IntelliJ
IDEA2018
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
运行程序,生成文档,水印效果如图,但是需要注意的是:在添加完水印效果后,查看文档时,在“普通视图”水印不可见,需在“页面布局”模式或“打印预览”模式下查看。