c# - 如何将 ClosedXML 中的合并单元格范围内的图像居中

标签 c# excel model-view-controller closedxml

我正在使用 ClosedXML ( https://github.com/ClosedXML/ClosedXML ) 在我的 C# MVC Controller 中创建 Excel 文件。根据 https://github.com/closedxml/closedxml/wiki/How-can-I-insert-an-image 中的文档,我已在单元格中插入图像并将该单元格与右侧的单元格合并。我的代码如下:

用于添加图像

var imagePath = @"c:\myFolder\image.jpg";
var image = MyWorkSheet.AddPicture(imagePath )                                               .MoveTo((MyWorkSheet.Cell(3,1).Address))                                               .Scale(0.2);
image.Width = 50;
image.Height = 50;

用于合并单元格

 MyWorkSheet.Range(MyWorkSheet.Cell(3,1).Address, MyWorkSheet.Cell(3, 3).Address).Merge();

但是图像位于单元格的左上角。我找不到任何网络资源来解释如何将图像置于单元格范围的中心。请任何人帮助我。

最佳答案

您必须将图像移动到单元格的偏移位置。为此,您必须计算该偏移量。 列宽以点(而不是像素)为单位返回。您必须将其转换为像素才能与图像像素宽度进行比较。

所以你可以这样做:

int iColumnWidth = (MyWorkSheet.Column(1).Width - 1) * 7 + 12; // To convert column width in pixel unit.
int xOffset = (iColumnWidth - image.Width) / 2;
int yOffset = 0;
image.MoveTo(MyWorkSheet.Cell(3,1), New Point(xOffset, yOffset));

关于c# - 如何将 ClosedXML 中的合并单元格范围内的图像居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53588258/

相关文章:

java - 使用 ModelMapper 时,如何为源类上的特定属性指定自定义映射?

css - Bootstrap v4.0.0-alpha.6 导航栏没有样式

C# - 将接口(interface)转换为备用基类?

c# - 是否有任何适用于 Windows 窗体、数据库驱动的应用程序开发/原型(prototype)设计的框架?

c# - Entity Framework - 代码优先 - 允许多个实体引用单个实体

excel - Powershell 无法向 Excel 单元格添加值

model-view-controller - 为什么要使用 MVC/路由器

c# - 使用 C# 中的调用命令抛出异常

excel - IF 函数不会将结果返回为 Pass 但数据可用

excel - 从 Excel 中的 INDEX 函数返回数组?