XSSFClientAnchor 設置偏移無效 setDx setDy

一、XSSFClientAnchor 設置偏移無效 setDx setDy

 

原因是因爲setDx,setDy所需要的x值y值並不是sheet.getColumnWidth(colNo)的值和

row.getHeight()的值,而是需要進行一些轉換。由於轉換系數比較大,所以一般設個幾百上千做測試基本是沒反應,看起來就像沒設置一樣。這裏先提供一下思路,有空再補全。


如果你設置的偏移是像素值,那麼參數應該乘以像素係數,如setDx(像素值*XSSFShape.EMU_PER_PIXEL

如果你設置的偏移是point值,那麼參數應該乘以point係數,如setDx(point值*XSSFShape.EMU_PER_POINT

 

有時需要跨多個單元格計算偏移的個數,這時候需要把sheet.getColumnWidth(colNo)的值和row.getHeight()的值先轉換成像素或者point,然後再乘以相應的係數。

二、使用實例:

 

        private void AddImg(string signimg, XSSFWorkbook wk, ISheet sheet, XSSFClientAnchor anchor)
        {
            //添加圖片
            //signimg = "/upload/images/content/202306/24/c8e6656b-8676-49a7-8ea8-0aa77f6bad5b.jpg";
            string filename = SiteConfig.SitePath + signimg;
            if (File.Exists(filename) == false)
                return;
            byte[] bytes = System.IO.File.ReadAllBytes(filename);
            int pictureIdx = wk.AddPicture(bytes, PictureType.JPEG);
            XSSFDrawing patriarch = (XSSFDrawing)sheet.CreateDrawingPatriarch();

            //HSSFClientAnchor anchor = new HSSFClientAnchor(223, 0, 0, 0, 0, 0, 1, 1);

            anchor.Dx1 = 1*XSSFShape.EMU_PER_PIXEL;
            anchor.Dy1 = 1*XSSFShape.EMU_PER_POINT;

            //設置圖片變換類型
            anchor.AnchorType = AnchorType.DontMoveAndResize;
            IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
            pict.Resize(0.9);
      
        }

 

 

更多:

.Net Core NPOI Excel插入圖片_Excel圖片操作

XSSFClientAnchor 設置偏移無效 setDx setDy_啵啵啃的博客-CSDN博客

XSSFClientAnchor_朕的愛妃呢的博客-CSDN博客

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章