Java下载excel文件并且添加水印效果

本文介绍了如何利用Java后端的POI库来创建并下载带有水印效果的Excel文件,提供了文件下载和水印添加的公共类方法,实现了将这两项功能集成到Java后端应用中。
摘要由CSDN通过智能技术生成

文件下载公共类

package com.sw.api.utils;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.xssf.usermodel.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

public class ExportUtil {
   


    public void export(HttpServletResponse response) throws IOException {
   
        //根据文件流创建XSSFWorkbook对象
        XSSFWorkbook wb = new XSSFWorkbook();
        //XSSFSheet sheet = wb.getSheetAt(0);
        XSSFSheet sheet = wb.createSheet("Sheet1");
        sheet.setDefaultColumnWidth(16);//设置默认列宽
        sheet.setDefaultRowHeightInPoints(20);//设置默认行高
        //设置样式;
        XSSFCellStyle style = wb.createCellStyle();
        //设置水平对齐的样式为居中对齐;
        style.setAlignment(HorizontalAlignment.CENTER);
        //设置垂直对齐的样式为居中对齐;
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        XSSFRow rowRowName = sheet.createRow(0);
        //设置水印
        WaterMarkUtil.putWaterMarkToExcel(wb);

        // 将列头设置到sheet的单元格中
        String[] rowName =  new String[] {
   "id", "年龄", "名称"};
        for(int n=0;n<rowName.length;n++){
   
            XSSFCell cellRowName = rowRowName.<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用Apache POI库来创建和编辑Excel文件。要在Excel添加水印,需要使用POI库中的HSSF API(对于.xls格式的Excel文件)或XSSF API(对于.xlsx格式的Excel文件)。 下面是添加水印的基本步骤: 1. 创建一个Excel工作簿对象 ```java Workbook workbook = new HSSFWorkbook(); // 如果是.xlsx文件,使用XSSFWorkbook ``` 2. 创建一个Excel工作表对象 ```java Sheet sheet = workbook.createSheet(); ``` 3. 创建一个水印对象 ```java Drawing drawing = sheet.createDrawingPatriarch(); ``` ```java // 创建一个文本水印 HSSFSimpleShape shape = drawing.createSimpleShape(new HSSFClientAnchor()); shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_TEXT); shape.setString(new HSSFRichTextString("watermark text")); ``` ```java // 创建一个图片水印 HSSFPicture picture = drawing.createPicture(new HSSFClientAnchor()); picture.setImageData(imageData); ``` 4. 调整水印位置和大小 ```java // 设置水印位置 shape.setAnchor(new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 1, 1)); ``` ```java // 调整水印大小 shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE); shape.setLineWidth(0); shape.setLineStyle(HSSFSimpleShape.LINESTYLE_NONE); shape.setNoFill(true); shape.setAnchor(new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 3, 3)); ``` 5. 将Excel文件保存到本地 ```java FileOutputStream fos = new FileOutputStream("path/to/excel/file"); workbook.write(fos); fos.close(); ``` 完整代码示例: ```java import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.hssf.usermodel.HSSFSimpleShape; import org.apache.poi.hssf.usermodel.HSSFPicture; import org.apache.poi.hssf.usermodel.HSSFRichTextString; public class WatermarkExample { public static void main(String[] args) throws Exception { // 创建一个Excel工作簿对象 Workbook workbook = new HSSFWorkbook(); // 创建一个Excel工作表对象 Sheet sheet = workbook.createSheet(); // 创建一个水印对象 Drawing drawing = sheet.createDrawingPatriarch(); // 创建一个文本水印 HSSFSimpleShape shape = drawing.createSimpleShape(new HSSFClientAnchor()); shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_TEXT); shape.setString(new HSSFRichTextString("watermark text")); // 设置水印位置 shape.setAnchor(new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 1, 1)); // 调整水印大小 shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE); shape.setLineWidth(0); shape.setLineStyle(HSSFSimpleShape.LINESTYLE_NONE); shape.setNoFill(true); shape.setAnchor(new HSSFClientAnchor(0, 0, 0, 0, 0, 0, 3, 3)); // 将Excel文件保存到本地 FileOutputStream fos = new FileOutputStream("path/to/excel/file"); workbook.write(fos); fos.close(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值