我正在使用 ClosedXML (https://github.com/ClosedXML/ClosedXML)在我的C#MVC控制器中创建Excel文件。根据{{3}}中的文档,我在单元格中插入了一个图像,并将该单元格与右侧的单元格合并。我的代码如下:
用于添加图片
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();
但是图像位于单元格的左上角。我找不到任何说明如何在单元格范围内将图像居中的Web资源。任何人都可以帮助我。
答案 0 :(得分:0)
您必须在与单元格偏移的位置移动图像。为此,您必须计算该偏移量。 列宽以点(而不是像素)为单位返回。您必须将其转换为像素才能与图像像素宽度进行比较。
因此您可以:
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));
答案 1 :(得分:-1)
您需要根据图像和像元大小进行一些手动计算。
Workbook wb = new Workbook();
Worksheet sheet = wb.Worksheets[0];
sheet.Range["A1"].Text = "Align Picture Within A Cell:";
sheet.Range["A1"].Style.VerticalAlignment = VerticalAlignType.Top;
string picPath = @"C:\Users\Administrator\Desktop\scenery.jpg";
ExcelPicture picture = sheet.Pictures.Add(1, 1, picPath);
sheet.Columns[0].ColumnWidth = 50;
sheet.Rows[0].RowHeight = 150;
picture.LeftColumnOffset =100;
picture.TopRowOffset = 25;
wb.SaveToFile("AlignPicture.xlsx", ExcelVersion.Version2013);