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