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博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2016-06-24 阿里UX矢量图标库–最强大的矢量图标库(Icon font制作力荐工具)