Java 给excel添加多行文本水印 Java如何给Excel文档添加多行文字水印。在Excel中添加水印可添加单一水印效果,即水印是以单个文本字样来呈现;也可添加多个平铺水印效果,即水印是以多个文本字样来页面中平铺。详细内容见下文。
工具/材料
Excel测试文档:.xlsx2013版
编译环境:IntelliJ
IDEA2018
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文档。多行水印效果如图: