最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)Excel導(dǎo)出并添加水印

 更新時間:2024年11月17日 15:52:36   作者:程序修理員  
這篇文章主要為大家詳細介紹了Java如何使用poi-ooxml包導(dǎo)出xlsx添加水印,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

之前的代碼是通過poi包導(dǎo)出xls文件,在poi相關(guān)類里面操作水印,嘗試了好幾次都沒有成功。后來換成poi-ooxml包導(dǎo)出xlsx添加水印成功。下面是導(dǎo)出xlsx添加水印的相關(guān)代碼。

1、添加相關(guān)依賴

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.22</version>
        </dependency>
        <!-- Apache POI for Excel -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>
        <!-- Apache POI dependencies -->
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>5.1.1</version>
        </dependency>

2、生成水印代碼

public static ByteArrayOutputStream createWaterMark(String content)
            throws IOException {
        // 這是水印字體的寬和高,可以調(diào)整這個大小來控制
        int width = 200;
        int height = 150;
        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);// 獲取bufferedImage對象
        String fontType = "微軟雅黑";
        int fontStyle = Font.BOLD;
        // 這是水印顯示字體的大小
        int fontSize = 20;
        Font font = new Font(fontType, fontStyle, fontSize);
        Graphics2D g2d = image.createGraphics(); // 獲取Graphics2d對象
        image = g2d.getDeviceConfiguration().createCompatibleImage(width,
                height, Transparency.TRANSLUCENT);
        g2d.dispose();
        g2d = image.createGraphics();
        g2d.setColor(new Color(0, 0, 0, 20)); // 設(shè)置字體顏色和透明度,最后一個參數(shù)為透明度
        g2d.setStroke(new BasicStroke(1)); // 設(shè)置字體
        g2d.setFont(font); // 設(shè)置字體類型 加粗 大小
        g2d.rotate(-0.5, (double) image.getWidth() / 2,
                (double) image.getHeight() / 2);// 設(shè)置傾斜度
        FontRenderContext context = g2d.getFontRenderContext();
        Rectangle2D bounds = font.getStringBounds(content, context);
        double x = (width - bounds.getWidth()) / 2;
        double y = (height - bounds.getHeight()) / 2;
        double ascent = -bounds.getY();
        double baseY = y + ascent;
        // 寫入水印文字原定高度過小,所以累計寫水印,增加高度
        g2d.drawString(content, (int) x, (int) baseY);
        // 設(shè)置透明度
        g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
        // 釋放對象
        g2d.dispose();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, "png", os);
        return os;
    }

目前生成圖片的效果圖如下,如果像調(diào)整誰

3、excel調(diào)用水印代碼

    public static void main(String[] args) throws IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Sheet1");
        ByteArrayOutputStream byteArrayOutputStream = createWaterMark("水印內(nèi)容");
        int pictureIdx = workbook.addPicture(byteArrayOutputStream.toByteArray()
                ,Workbook.PICTURE_TYPE_PNG);
        String rID = sheet.addRelation(null, XSSFRelation.IMAGES,workbook
                .getAllPictures().get(pictureIdx)).getRelationship().getId();
        sheet.getCTWorksheet().addNewPicture().setId(rID);

        // 創(chuàng)建一個行對象
        XSSFRow row = sheet.createRow(0);  // 第一行

        // 在行中創(chuàng)建單元格并設(shè)置值
        XSSFCell cell = row.createCell(0); // 第一列
        cell.setCellValue("Hello, Excel!");

        // 寫入到文件系統(tǒng)
        try (FileOutputStream outputStream = new FileOutputStream("Example.xlsx")) {
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

4、輸出效果

到此這篇關(guān)于Java實現(xiàn)Excel導(dǎo)出并添加水印的文章就介紹到這了,更多相關(guān)Java Excel導(dǎo)出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java selenium教程之selenium詳細介紹

    java selenium教程之selenium詳細介紹

    本文主要介紹Java selenium,這里整理了selenium的一些基本資料,此軟件主要用于Web UI自動測試框架,有興趣的同學(xué)可以看一下
    2016-08-08
  • java 中二分法查找的應(yīng)用實例

    java 中二分法查找的應(yīng)用實例

    這篇文章主要介紹了java 中二分法查找的應(yīng)用實例的相關(guān)資料,希望通過本文大家能掌握二分法的使用方法,需要的朋友可以參考下
    2017-09-09
  • Java線程池的幾種實現(xiàn)方法和區(qū)別介紹實例詳解

    Java線程池的幾種實現(xiàn)方法和區(qū)別介紹實例詳解

    本篇文章主要介紹了Java線程池的幾種實現(xiàn)方法和區(qū)別,需要的朋友可以參考
    2017-04-04
  • Java報錯java.awt.AWTException: AWT的解決方法

    Java報錯java.awt.AWTException: AWT的解決方法

    在Java圖形用戶界面(GUI)編程中,java.awt.AWTException是一個常見的異常,它通常與AWT(Abstract Window Toolkit)組件相關(guān),這個異??赡茉趪L試進行與窗口、圖形環(huán)境或系統(tǒng)剪貼板等操作時拋出,本文將詳細探討AWTException的成因,并提供多種解決方案
    2024-12-12
  • 基于SpringBoot和Hutool工具包實現(xiàn)驗證碼的案例

    基于SpringBoot和Hutool工具包實現(xiàn)驗證碼的案例

    隨著安全性的要求越來越高,目前項目中很多都會使用驗證碼,只要涉及到登錄,絕大多數(shù)都會有驗證的要求,驗證碼的形式也是多種多樣,更復(fù)雜的圖形驗證碼和行為驗證碼已經(jīng)成為了更流行的趨勢,本文給大家介紹了SpringBoot Hutool實現(xiàn)驗證碼的案例,需要的朋友可以參考下
    2024-05-05
  • java 中cookie的詳解及簡單實例

    java 中cookie的詳解及簡單實例

    這篇文章主要介紹了java 中cookie的詳解及簡單實例的相關(guān)資料,這里對cookie 的建立與讀取,和設(shè)定cookie 生命周期等詳細介紹,需要的朋友可以參考下
    2017-01-01
  • Java?死鎖解決方案順序鎖和輪詢鎖

    Java?死鎖解決方案順序鎖和輪詢鎖

    這篇文章主要介紹了Java?死鎖解決方案順序鎖和輪詢鎖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Java中的LinkedHashMap詳解

    Java中的LinkedHashMap詳解

    這篇文章主要介紹了Java中的LinkedHashMap詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護了一個Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • Java中String類(StringBuffer、StringBuilder)相關(guān)(最新推薦)

    Java中String類(StringBuffer、StringBuilder)相關(guān)(最新推薦)

    Java中的String類是不可變的,存儲在字符串常量池中,提供了多種方法用于操作字符串,為了提高效率,可以使用StringBuilder或StringBuffer,本文介紹Java中String類(StringBuffer、StringBuilder)相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java實現(xiàn)微信支付功能

    java實現(xiàn)微信支付功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)微信支付功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論

闽清县| 岗巴县| 民勤县| 揭阳市| 铜山县| 承德市| 重庆市| 星子县| 资溪县| 苍山县| 台前县| 莎车县| 南江县| 安徽省| 景德镇市| 博乐市| 石泉县| 凤山县| 闵行区| 阿勒泰市| 丹巴县| 蒙城县| 南投县| 察雅县| 铁力市| 蒙山县| 历史| 龙门县| 商南县| 微山县| 蒙自县| 永州市| 谷城县| 临城县| 广元市| 中阳县| 托克逊县| 京山县| 黔江区| 怀仁县| 绿春县|