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

 

posted @ 2023-06-24 21:31  天马3798  阅读(1073)  评论(0编辑  收藏  举报