国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Java將圖片添加到Excel的幾種方式

這篇具有很好參考價值的文章主要介紹了使用Java將圖片添加到Excel的幾種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、超鏈接

使用POI,依賴如下

         <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

Java代碼如下,運行該程序它會在桌面創(chuàng)建ImageLinks.xlsx文件。

import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class ExportTest {
    public static void main(String[] args) {
        // 創(chuàng)建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Image Links");

        // 創(chuàng)建超鏈接
        XSSFRow row = sheet.createRow(0);
        XSSFCell cell = row.createCell(0);

        XSSFCreationHelper creationHelper = workbook.getCreationHelper();
        XSSFHyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.URL);
        hyperlink.setAddress("https://img1.baidu.com/it/u=727029913,321119353&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1698771600&t=fcf922a02fa5fc68ebf888e7fc1c9dcd");

        // 將超鏈接添加到單元格
        cell.setHyperlink(hyperlink);
        // 設(shè)置字體樣式為藍(lán)色
        XSSFFont font = workbook.createFont();
        font.setColor(IndexedColors.BLUE.getIndex());

        XSSFCellStyle style = workbook.createCellStyle();
        style.setFont(font);

        cell.setCellStyle(style);
        cell.setHyperlink(hyperlink);
        cell.setCellValue("點擊這里下載圖片");
        // 保存Excel文件到桌面
        String desktopPath = System.getProperty("user.home") + "/Desktop/";
        String filePath = desktopPath + "ImageLinks.xlsx";

        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
            workbook.write(outputStream);
            System.out.println("Excel file has been saved to the desktop.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

java把圖片放在excel里,java,excel,python
java把圖片放在excel里,java,excel,python
點擊它會自動打開瀏覽器訪問設(shè)置的超鏈接
java把圖片放在excel里,java,excel,python

2、單元格插入圖片 - POI

使用POI
下面是java代碼


import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;


public class ExportTest {
    public static void main(String[] args) {
        // 創(chuàng)建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Images");

        // 從URL加載圖片
        try {
            URL imageUrl = new URL("https://img1.baidu.com/it/u=727029913,321119353&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1698771600&t=fcf922a02fa5fc68ebf888e7fc1c9dcd");
            InputStream imageStream = imageUrl.openStream();
            byte[] bytes = IOUtils.toByteArray(imageStream);

            // 將圖片插入到單元格
            XSSFRow row = sheet.createRow(0);
            XSSFCell cell = row.createCell(0);

            XSSFDrawing drawing = sheet.createDrawingPatriarch();
            XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, cell.getColumnIndex(), row.getRowNum(), cell.getColumnIndex() + 1, row.getRowNum() + 1);
            int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);

            XSSFPicture picture = drawing.createPicture(anchor, pictureIdx);
            picture.resize(); // 調(diào)整圖片大小

            imageStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 保存Excel文件到桌面
        String desktopPath = System.getProperty("user.home") + "/Desktop/";
        String filePath = desktopPath + "ExcelWithImage.xlsx";

        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
            workbook.write(outputStream);
            System.out.println("Excel file with image has been saved to the desktop.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

運行代碼之后會在桌面生成文件ExcelWithImage.xlsx
java把圖片放在excel里,java,excel,python
可以看到圖片插入到了單元格中
java把圖片放在excel里,java,excel,python
但是尺寸太大了并且占了n行n列,下面設(shè)置成占1行1列,只需要修改一行代碼

// 設(shè)置固定尺寸
 picture.resize(1, 1);

java把圖片放在excel里,java,excel,python
看著還是有點別扭,再設(shè)置一下寬高,看下效果
java把圖片放在excel里,java,excel,python
可以看到已經(jīng)非常Nice了,下面是調(diào)整后的代碼


import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;


public class ExportTest {
    public static void main(String[] args) {
        // 創(chuàng)建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Images");

        // 從URL加載圖片
        try {
            URL imageUrl = new URL("https://img1.baidu.com/it/u=727029913,321119353&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1698771600&t=fcf922a02fa5fc68ebf888e7fc1c9dcd");
            InputStream imageStream = imageUrl.openStream();
            byte[] bytes = IOUtils.toByteArray(imageStream);

            // 將圖片插入到單元格
            XSSFRow row = sheet.createRow(0);
            XSSFCell cell = row.createCell(0);
            // 設(shè)置單元格寬度,單位為字符
            int widthInCharacters = 10;
            row.getSheet().setColumnWidth(cell.getColumnIndex(), widthInCharacters * 256);
            // 設(shè)置單元格高度,單位為點數(shù)
            float heightInPoints = 100;
            row.setHeightInPoints(heightInPoints);
            XSSFDrawing drawing = sheet.createDrawingPatriarch();
            XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, cell.getColumnIndex(), row.getRowNum(), cell.getColumnIndex() + 1, row.getRowNum() + 1);
            int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);

            XSSFPicture picture = drawing.createPicture(anchor, pictureIdx);
            picture.resize(1, 1);// 調(diào)整圖片大小

            imageStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 保存Excel文件到桌面
        String desktopPath = System.getProperty("user.home") + File.separator + "Desktop" + File.separator;
        String filePath = desktopPath + "ExcelWithImage.xlsx";

        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
            workbook.write(outputStream);
            System.out.println("Excel file with image has been saved to the desktop.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3、單元格插入圖片 - EasyExcel

先看效果
java把圖片放在excel里,java,excel,python
代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-810239.html

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import org.apache.poi.util.IOUtils;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class ExportTest {
    public static void main(String[] args) {
        try {
            // 從URL加載圖片
            URL imageUrl = new URL("https://img1.baidu.com/it/u=727029913,321119353&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1698771600&t=fcf922a02fa5fc68ebf888e7fc1c9dcd");
            InputStream imageStream = imageUrl.openStream();
            byte[] bytes = IOUtils.toByteArray(imageStream);

            // 保存Excel文件到桌面
            String desktopPath = System.getProperty("user.home") + File.separator + "Desktop" + File.separator;
            String filePath = desktopPath + "ExcelWithImage.xlsx";

            // 使用EasyExcel創(chuàng)建Excel
            EasyExcel.write(filePath)
                    .head(ImageData.class)
                    .sheet("Images")
                    .doWrite(data(bytes));

            System.out.println("Excel file with image has been saved to the desktop.");
            imageStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @ContentRowHeight(100)
    private static class ImageData {
        @ExcelProperty("圖片")
        private byte[] imageBytes;

        public ImageData(byte[] imageBytes) {
            this.imageBytes = imageBytes;
        }

        public byte[] getImageBytes() {
            return imageBytes;
        }
    }

    private static List<ImageData> data(byte[] imageBytes) {
        List<ImageData> list = new ArrayList<>();
        list.add(new ImageData(imageBytes));
        return list;
    }
}

到了這里,關(guān)于使用Java將圖片添加到Excel的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java:解析json的幾種方式

    Java是一種流行的編程語言,它提供了很多實用的庫和工具,在處理JSON數(shù)據(jù)時也不例外。在本文中,我們將介紹Java中如何解析JSON數(shù)據(jù)。 JSON是一種輕量級的數(shù)據(jù)交換格式,它已經(jīng)成為Web應(yīng)用程序中最流行的數(shù)據(jù)格式之一。Java提供了許多庫來處理JSON數(shù)據(jù),包括Jackson、Gson和JS

    2024年02月03日
    瀏覽(18)
  • Java 終止線程的幾種方式

    所謂正常運行結(jié)束,就是程序正常運行結(jié)束,線程自動結(jié)束。 一般run()方法執(zhí)行完,線程就會正常結(jié)束,然而,常常有些線程是伺服線程。他們需要長時間的運行,只有在外部某些條件滿足的情況下,才能關(guān)閉這些線程。使用一個變量來控制循環(huán),例如:最直接的方法就是設(shè)

    2024年02月07日
    瀏覽(22)
  • Java讀取文件的幾種方式

    1. 使用流讀取文件 2. 使用JDK1.7提供的NIO讀取文件(適用于小文件) 3. 使用JDK1.7提供的NIO讀取文件(適用于大文件) 4. 使用JDK1.4提供的NIO讀取文件(適用于超大文件) 5. 使用cmmons-io依賴提供的FileUtils工具類讀取文件 添加依賴: 6. 使用cmmons-io依賴提供的IOtils工具類讀取文件 添加依賴:

    2024年02月16日
    瀏覽(27)
  • Java實現(xiàn)異步的幾種方式

    Java實現(xiàn)異步的幾種方式

    普通線程實現(xiàn)異步,但頻繁創(chuàng)建、銷毀線程比較耗資源,所以一般交給線程池執(zhí)行 結(jié)果: Future異步 和普通線程實現(xiàn)異步區(qū)別不大,只是使用Future是要獲取執(zhí)行后的返回值 結(jié)果: Spring的@Async異步 使用@Async注解實現(xiàn)異步的前提是需要在啟動類上標(biāo)注@EnableAsync來開啟異步配置

    2024年02月04日
    瀏覽(38)
  • java 讀取文件的幾種方式

    在 Java 中有幾種常用的方式來讀取文件: 使用 FileInputStream 類以字節(jié)的方式讀取文件。 使用 BufferedReader 在字符輸入流上包裝一個緩沖區(qū),以行為單位讀取文件。 使用 Scanner 類以分隔符為標(biāo)志讀取文件。 使用 Files 類的 readAllLines 方法一次性讀取所有行。 使用 ObjectInputStream 反

    2024年02月14日
    瀏覽(18)
  • Java判斷null的幾種方式

    Java判斷null的幾種方式

    組內(nèi)code review時,有同學(xué)提到字符串判斷空值的寫法,如下兩種, (1)null在后, (2)null在前, 這兩種寫法,有什么區(qū)別? 這兩個測試,都可以執(zhí)行,有種解釋是,null放在前面是為了避免少寫一個\\\"=\\\",因為\\\"null=\\\"書寫會報錯,防止筆誤寫成\\\"=null\\\",不會報錯,進而漏掉問題。

    2024年02月13日
    瀏覽(20)
  • java數(shù)組轉(zhuǎn)List的幾種方式

    java數(shù)組轉(zhuǎn)List的幾種方式

    缺點 : 不可新增、刪除元素 。如上圖remove()操作后,會報下圖中的錯誤。 報錯原因 :Arrays.asList(strArr)返回值是java.util.Arrays類中一個私有靜態(tài)內(nèi)部類 java.util.Arrays.Arraylist,并不是我們平時用的java.util.ArrayList()。 java.util.Arrays.ArrayList類具有 set(),get(),contains()等方法,但是不

    2024年02月10日
    瀏覽(88)
  • java stream去重的幾種方式

    這個方法會根據(jù)元素的 hashCode() 和 equals() 方法來判斷是否重復(fù)。如果是自定義的類,需要重寫這兩個方法。 示例: 這個方法可以根據(jù)元素的某個屬性或者多個屬性來去重,比如 name 或者 name+address。這個方法會使用 TreeSet 來排序元素,所以不能保持原來的順序。 示例: 這個方

    2024年02月13日
    瀏覽(90)
  • java讀取資源路徑的幾種方式

    java讀取資源路徑的幾種方式

    注意,以上是在Junit測試文件中的結(jié)果,工作可以精確到所在模塊,而普通類里打印是只有主目錄沒有模塊的,如下:

    2024年02月15日
    瀏覽(21)
  • Java 中創(chuàng)建線程的幾種方式

    Java 中創(chuàng)建線程的幾種方式

    Java 是一種面向?qū)ο蟮木幊陶Z言,它支持多線程編程。多線程編程是指在一個程序中同時運行多個線程,這些線程可以并行執(zhí)行,以提高程序的效率和性能。Java 提供了多種創(chuàng)建線程的方法,本文將介紹這些方法以及它們的優(yōu)缺點。 Java 中的 Thread 類是一個抽象類,我們可以通

    2024年02月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包