如何将图像添加到单元格

时间:2019-01-23 13:38:47

标签: c# ms-word office-interop

我们已经建立了基于Word Interop的流程来生成发票。这个过程运行了多年,将加载一个预先构建的docx模板文件并填充数据。该模板的页眉和页脚每个都有一个表。当前,下面的代码将文本填充到页脚的给定单元格中

protected override void OnEnterRow()
{
    Try(() => _parent.OLE_WordCell.Value = _parent.OLE_WordTable.Value.Cell(u.ToInt(I_RowNumber), u.ToInt(I_CellNumber)));
    Try(() => _parent.OLE_WordCell.Value.Range.Text = u.TrimEnd(I_CellText));
    Try(() => _parent.OLE_WordCell.Value.Range.Font.Bold = u.ToInt(I_CellBold));
}

我需要根据某种简单逻辑将图像添加到发票的页脚中。我在此站点和其他站点上看到了多个示例,该如何进行。虽然就我而言,它确实添加了图像,但是没有添加到页脚中,我将不胜感激任何帮助。

在进行任何重大更改之前,我只想显示图像而不是文本,因此我禁用了上面的行并应用了以下代码:

Try(() => _parent.OLE_WordCell.Value = _parent.OLE_WordTable.Value.Cell(u.ToInt(I_RowNumber), u.ToInt(I_CellNumber)));
Try(() => _parent.OLE_WordCell.Value.Range.InlineShapes.AddPicture(I_FilePath).ConvertToShape());

它将图像添加到发票的中间(不是页脚)。由于我尝试过各种代码,因此以下是最新代码,但无济于事。

此代码在发票上放置了一张大图片

var _cell = _parent.OLE_WordTable.Value.Cell(u.ToInt(I_RowNumber), u.ToInt(I_CellNumber));
var _range = _cell.Range;
var _shape = _range.InlineShapes.AddPicture(I_FilePath.Value.ToString().Trim()).ConvertToShape();

所以我增加了高度和宽度:

var _cell = _parent.OLE_WordTable.Value.Cell(u.ToInt(I_RowNumber), u.ToInt(I_CellNumber));
var _range = _cell.Range;
var _shape = _range.InlineShapes.AddPicture(I_FilePath.Value.ToString().Trim()).ConvertToShape();
_shape.HeightRelative = 8f;
_shape.WidthRelative = 10f;

它成功减小了尺寸,但是图像仍保留在发票的中间。然后,我已经看到有人建议添加了Select()。但这会将图像放置在页面的左上角。

var _cell = _parent.OLE_WordTable.Value.Cell(u.ToInt(I_RowNumber), u.ToInt(I_CellNumber));
_cell.Select();
var _range = _cell.Range;
var _shape = _range.InlineShapes.AddPicture(I_FilePath.Value.ToString().Trim()).ConvertToShape();
_shape.HeightRelative = 8f;
_shape.WidthRelative = 10f;

请尝试其他方法吗?

0 个答案:

没有答案