一、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博客