织梦做的网站图片路径在哪,关于宠物的网站模板,万国商业网,网站备案接入商变更以下代码#xff0c;亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印#xff0c;但是最近主线版本用了4.1.2的形式#xff0c;由于为了保持版本的兼容性#xff0c;下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为#xff1a; d…以下代码亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印但是最近主线版本用了4.1.2的形式由于为了保持版本的兼容性下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为 dependenciesdependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion4.1.2/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion4.1.2/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversionRELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdooxml-schemas/artifactIdversion1.4/version/dependency/dependencies测试类及主要 功能代码
package com.msl;import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.*;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;import static java.awt.image.BufferedImage.TYPE_INT_ARGB;public class ExcelWatermark0905 {public static void main(String[] args) {// 输入Excel文件路径// String inputFile /Users/navyliu/Downloads/input/附件2-3企业资产转让业务尽职调查报告申请机构_业务部门填写1.xlsx;// String inputFile /Users/navyliu/Downloads/input/kxkj.xlsx;// String inputFile /Users/navyliu/Downloads/input/test.xlsx;String inputFile /Users/navyliu/Downloads/input/315.xlsx;// 输出Excel文件夹路径String outputFolder /Users/navyliu/Downloads/output;// 水印文字String watermarkText 我是水印文字;try {FileInputStream fis new FileInputStream(inputFile);XSSFWorkbook workbook new XSSFWorkbook(fis);// 设置文本和字体大小Font font new Font(宋体,Font.PLAIN,36);
// XXSFont font workbook.createFont();
// font.setFontName(仿宋);
// font.setFontHeightInPoints((short) 20);int height 467;int width 987;BufferedImage watermarkImage drawText(watermarkText, font, Color.orange, Color.white, height, width);ByteArrayOutputStream byteArrayOut new ByteArrayOutputStream();ImageIO.write(watermarkImage, png, byteArrayOut);int pictureIdx workbook.addPicture(byteArrayOut.toByteArray(), Workbook.PICTURE_TYPE_PNG);for (int i 0; i workbook.getNumberOfSheets(); i) {XSSFSheet xssfSheet workbook.getSheetAt(i);String rID xssfSheet.addRelation(null, XSSFRelation.IMAGE_PNG, workbook.getAllPictures().get(pictureIdx)).getRelationship().getId();//set background picture to sheetxssfSheet.getCTWorksheet().addNewPicture().setId(rID);}// 保存带水印的Excel到输出文件夹File outputDir new File(outputFolder);if (!outputDir.exists()) {outputDir.mkdirs();}String outputFilePath outputFolder /output2.xlsx;FileOutputStream fos new FileOutputStream(outputFilePath);workbook.write(fos);fos.close();fis.close();} catch (IOException e) {e.printStackTrace();}}private static BufferedImage drawText(String text, Font font, Color textColor, Color backColor, double height, double width) {BufferedImage img new BufferedImage((int) width, (int) height, TYPE_INT_ARGB);Graphics2D loGraphic img.createGraphics();FontMetrics loFontMetrics loGraphic.getFontMetrics(font);int liStrWidth loFontMetrics.stringWidth(text);int liStrHeight 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) / 4, -((int) height - liStrHeight) / 4);loGraphic.setFont(font);loGraphic.setColor(textColor);loGraphic.drawString(text, ((int) width - liStrWidth) / 4, ((int) height - liStrHeight) / 2);loGraphic.drawString(text, ((int) width - liStrWidth) / 2, ((int) height - liStrHeight) / 4);loGraphic.drawString(text, ((int) width - liStrWidth) / 6, ((int) height - liStrHeight) / 20);loGraphic.dispose();return img;}
}
执行后的结果截图