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

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

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

問題

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

解決

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

方式一

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

    /**
    * @param workbook  workbook對(duì)象
    * @param sheet   工作簿對(duì)象
    * @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è)置請(qǐng)求超時(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);  // 這個(gè)方法在 Android 端會(huì)造成崩潰。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

方式二

雖然復(fù)雜點(diǎn),但是無(wú)論是多端還是定制性都更強(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è)置請(qǐng)求超時(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 的八個(gè)參數(shù)int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2

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

重點(diǎn)要看后四個(gè)參數(shù)

short col1, int row1, short col2, int row2

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

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

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

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

相關(guān)文章

最新評(píng)論

桃园市| 同心县| 吴忠市| 辽源市| 宜宾县| 包头市| 德令哈市| 东山县| 克什克腾旗| 黑水县| 楚雄市| 东海县| 昌黎县| 岱山县| 商洛市| 苏尼特左旗| 称多县| 扬州市| 乐陵市| 遵义县| 商都县| 湖口县| 凤翔县| 台南县| 油尖旺区| 彭水| 福清市| 鄂尔多斯市| 思南县| 红原县| 木兰县| 静海县| 乌鲁木齐县| 故城县| 新乐市| 沁阳市| 滦平县| 长武县| 元氏县| 太康县| 阜平县|