我正在开发一个.net6.0项目,我必须使用NPOI库生成.xslx文件,我需要在一个单元格上添加一个中心图像。
首先,我创建一个XSSFWorkbook,添加一个工作表,一行和单元格:
var workbook = new XSSFWorkbook();
var currentWorksheet = workbook.CreateSheet("MyWorksheet");
// Setting default width of my column
currentWorkSheet.SetColumnWidth(0, 600);
// Creating row
var currentRow = currentWorksheet.CreateRow(0);
currentRow.Height = 600;
字符串
现在我有了我的上下文,我想添加一个居中的图像,因此我添加了图像(base64string):
// Converting base64string image in byte[]
var img = Convert.FromBase64String("MyBase64Image");
var pictureIndex = workbook.AddPicture(img, PictureType.PNG);
IDrawing drawing = currentWorkSheet.CreateDrawingPatriarch();
// Defining my image anchor
IClientAnchor anchor = drawing.CreateAnchor(200, 200, 400, 400, 0, 0, 0, 0);
anchor.AnchorType = AnchorType.MoveDontResize;
var picture = drawing.CreatePicture(anchor, pictureIndex);
picture.Resize();
// I want my image doing a specific size so i resize it :
var imageSize = picture.GetImageDimension();
double resizeX = 50.0 / imageSize.Width;
double resizeY = 50.0 / imageSize.Height;
picture.Resize(resizeX, resizeY);
型
但不管我在
IClientAnchor anchor = drawing.CreateAnchor(200, 200, 400, 400, 0, 0, 0, 0);
型
(除了最后4个)我的图像粘在我的单元格的左上角。我如何在我的单元格中居中?
我试图修改我的锚的dx1,dx2,dy1,dy2的值,但无论我使用哪个值,图像都留在同一个锅里。
1条答案
按热度按时间jgovgodb1#
今天我也遇到了这个问题。我通过定义锚解决了这个问题
字符串
总是提到在把工作表数据放在一起后最后添加图像,在绘制图像之前必须调整所有行和列的大小。这是我处理了几个小时的问题。