欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android利用POI實現(xiàn)將圖片插入到Excel

 更新時間:2023年11月09日 13:56:35   作者:芝麻粒兒  
這篇文章主要為大家詳細(xì)介紹了Android如何利用POI實現(xiàn)將圖片插入到Excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

問題

前兩天有個小工具的開發(fā),實現(xiàn)自動化將Excel中的圖片鏈接Down下來然后插入到Excel表格中。朋友一直維護(hù)著任務(wù)類的(就那種打分評分啊,刷好評啊那些)。她量大,需要審核,靠人力實在是勞累。所以我研究了自動化。

解決

實現(xiàn)插入圖片有兩種方式

方式一

直接插入到指定單元格,該方式適用于 Java 端,也就是在 PC上用,Android 因為缺少 resize的內(nèi)容會報錯。博主沒找那么多資料看如何解決,我就直接用了方式二,支持Android的。

    /**
    * @param workbook  workbook對象
    * @param sheet   工作簿對象
    * @param fileUrl  URL
    * @param row  第多少行
    * @param col  第多少列
    * @param scaleX   X軸
    * @param scaleY   Y軸
     */
    public static void picture2(Workbook workbook, Sheet sheet, String fileUrl, int row, int col, double scaleX, double scaleY) {
        try {
            //防止URL地址有中文,解碼
            String head = fileUrl.substring(0, fileUrl.lastIndexOf("/")+1);
            String suffix = fileUrl.substring(fileUrl.lastIndexOf("/")+1);
            String link = head + URLEncoder.encode(suffix,"UTF-8");
            URL url = new URL(link);  // 構(gòu)造URL
            URLConnection con = url.openConnection(); // 打開連接
            con.setConnectTimeout(8 * 1000);   //設(shè)置請求超時
            InputStream is = con.getInputStream();  // 輸入流
            byte[] bytes = IOUtils.toByteArray(is);
            @SuppressWarnings("static-access")
            int pictureIdx = workbook.addPicture(bytes, workbook.PICTURE_TYPE_PNG); //參數(shù)二是圖片格式 還有jpg格式等
            CreationHelper helper = workbook.getCreationHelper();
            Drawing drawing = sheet.createDrawingPatriarch();
            ClientAnchor anchor = helper.createClientAnchor();
            anchor.setCol1(col); // 圖片插入坐標(biāo)
            anchor.setRow1(row);
            Picture pict = drawing.createPicture(anchor, pictureIdx); // 插入圖片
            pict.resize(scaleX, scaleY);  // 這個方法在 Android 端會造成崩潰。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

方式二

雖然復(fù)雜點,但是無論是多端還是定制性都更強(qiáng)一些。該方式是插入坐標(biāo),坐標(biāo)稍微復(fù)雜些。

    public static void picture(Workbook workbook, Sheet sheet, String fileUrl, String fileType, int row, int col) {
        try {
            Drawing patriarch = sheet.createDrawingPatriarch();
            URL url = new URL(fileUrl);  // 構(gòu)造URL
            URLConnection con = url.openConnection();   // 打開連接
            con.setConnectTimeout(8 * 1000);  //設(shè)置請求超時
            InputStream is = con.getInputStream();    // 輸入流
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
            BufferedImage bufferImg = ImageIO.read(is);
            ImageIO.write(bufferImg, "JPEG", byteArrayOut);
            bufferImg.flush();
            byteArrayOut.flush();
            XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0,( short ) 0, 0, ( short ) 5, 8);
            patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));   //參數(shù)二是圖片格式 還有png格式等
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

主要解釋一下定位圖片位置函數(shù) ClientAnchor 的八個參數(shù)int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2

前四個表示的是 excel 邊框的內(nèi)距離,我們通常情況下都是0。

重點要看后四個參數(shù)

short col1, int row1, short col2, int row2

前兩個表示圖片左上角所在的單元格左上角的位置,這個不難理解。

后兩個表示圖片右下角所在的單元格左上角的位置,這個要特別留意。

橫向的 A B C D列 是從0開始數(shù)的,圖中 C是 2 豎著的是 4 ,自然起始左上角就是 2 ,4 。 右下角是同理

到此這篇關(guān)于Android利用POI實現(xiàn)將圖片插入到Excel的文章就介紹到這了,更多相關(guān)Android圖片插入Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android開發(fā)之ListView列表刷新和加載更多實現(xiàn)方法

    Android開發(fā)之ListView列表刷新和加載更多實現(xiàn)方法

    這篇文章主要介紹了Android開發(fā)之ListView列表刷新和加載更多實現(xiàn)方法,實例分析了ListView列表操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Android開發(fā)中自定義ProgressBar控件的方法示例

    Android開發(fā)中自定義ProgressBar控件的方法示例

    這篇文章主要介紹了Android開發(fā)中自定義ProgressBar控件的方法,結(jié)合實例形式分析了自定義ProgressBar控件的定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • Android實現(xiàn)三段式滑動效果

    Android實現(xiàn)三段式滑動效果

    最近發(fā)現(xiàn)很多app都使用了三段式滑動,比如說高德的首頁和某寶等物流信息都是使用的三段式滑動方式,谷歌其實給了我們很好的2段式滑動,就是BottomSheet,所以這次我也是在這個原理基礎(chǔ)上做了一個小小的修改來實現(xiàn)我們今天想要的效果。
    2021-06-06
  • Android自定義view利用PathEffect實現(xiàn)動態(tài)效果

    Android自定義view利用PathEffect實現(xiàn)動態(tài)效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義view利用PathEffect實現(xiàn)動態(tài)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 通俗易通講解Android藍(lán)牙鍵值適配

    通俗易通講解Android藍(lán)牙鍵值適配

    這篇文章介紹了Android藍(lán)牙鍵值適配的方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • Android自定義控件實現(xiàn)通用驗證碼輸入框(二)

    Android自定義控件實現(xiàn)通用驗證碼輸入框(二)

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實現(xiàn)通用驗證碼輸入框的第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • android中開啟actionbar的兩種方法

    android中開啟actionbar的兩種方法

    這篇文章主要介紹了android中開啟actionbar的兩種方法,本文給出了靜態(tài)開啟和動態(tài)開啟2種方法,需要的朋友可以參考下
    2015-06-06
  • android編程實現(xiàn)系統(tǒng)圖片剪裁的方法

    android編程實現(xiàn)系統(tǒng)圖片剪裁的方法

    這篇文章主要介紹了android編程實現(xiàn)系統(tǒng)圖片剪裁的方法,涉及Android針對圖片的獲取、修改、保存等操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Android音視頻開發(fā)之MediaPlayer使用教程

    Android音視頻開發(fā)之MediaPlayer使用教程

    Android多媒體框架支持播放提供了MediaPlayerAPI,可以通過MediaPlayer來實現(xiàn)媒體文件播放。可以說MediaPlayer是非常方便使用的多媒體播放器。本文將詳細(xì)講解MediaPlayer的使用,需要的可以參考一下
    2022-04-04
  • Android開發(fā)懸浮按鈕 Floating ActionButton的實現(xiàn)方法

    Android開發(fā)懸浮按鈕 Floating ActionButton的實現(xiàn)方法

    這篇文章主要介紹了Android開發(fā)懸浮按鈕 Floating ActionButton的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09

最新評論