ruoyi 导出添加水印
时间: 2025-05-24 13:45:13 浏览: 15
### RuoYi项目中实现导出Excel添加水印的方式
在RuoYi框架中,可以通过集成Apache POI库来实现在导出Excel时添加水印的功能。具体来说,可以利用POI提供的API对工作簿(Workbook)对象进行操作,在其中嵌入文字形式的水印[^3]。
以下是具体的实现方式:
#### 1. 工具类设计
创建一个专门用于处理Excel水印的工具类`ExcelWaterMark.java`,该类提供静态方法供外部调用以插入水印。
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFShape;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelWaterMark {
public static void insertWaterMarkText(XSSFWorkbook workbook, String waterMarkText) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个sheet页
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 0, 8, 8);
XSSFTextBox textbox = drawing.createSimpleTextbox(anchor);
CTP ctParagraph = CTP.Factory.newInstance();
CTTextBodyProperties ctBodyProp = ctParagraph.addNewPPr().addNewTextBodyProperties();
CTRegularTextrun r = ctParagraph.addNewR(); // 创建一个新的文本运行实例
CTRPr rpr = r.addNewRPr(); // 设置字体属性
rpr.setSz(2400L); // 字体大小
rpr.setColor("BFBFBF"); // 颜色设置为灰色
CTTextCharacterProperties sp = r.addNewT();
sp.setStringValue(waterMarkText); // 插入水印文字内容
textbox.setTextParagraphs(new TextParagraph[] { new XSSFTextParagraph(ctParagraph, null) });
textbox.setHorizontalAlignment(HorizontalAlignment.CENTER);
textbox.setVerticalAlignment(VerticalAlignment.MIDDLE);
}
}
```
此代码片段定义了一个名为 `insertWaterMarkText` 的函数,它接受两个参数:一个是代表整个Excel文档的工作簿对象 (`workbook`);另一个是要作为水印显示的文字字符串(`waterMarkText`)。这段逻辑会在指定位置绘制半透明的文字层覆盖于表格之上形成视觉上的“水印”效果[^5]。
#### 2. 调整现有导出流程
当使用Ruoyi默认提供的Excel导出功能时,可以在生成完毕后的Workbook阶段加入上述自定义水印逻辑。例如修改原有写入片断如下所示:
```java
@Override
protected void afterWriteWorkBook() {
super.afterWriteWorkBook();
// 向当前正在构建中的Excel文件里增加水印信息
ExcelWaterMark.insertWaterMarkText((XSSFWorkbook)this.wb,"若依管理系统");
}
```
这里重写了父类里的afterWriteWorkBook方法,在完成基础的数据填充之后立即执行额外的操作——即调用水印插件给最终产物附加标记。
通过以上两步即可顺利完成基于RuoYi项目的Excel导出过程中自动附加上所需样式的水印需求。
阅读全文
相关推荐


















