工具/材料
測試文檔: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;iwb.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
運行程序,生成文檔,水印效果如圖,但是需要註意的是:在添加完水印效果後,查看文檔時,在“普通視圖”水印不可見,需在“頁面布局”模式或“打印預覽”模式下查看。