C# 使用NPOI将图像添加到Word docx文件

C# 使用NPOI将图像添加到Word docx文件,c#,.net,ms-word,npoi,C#,.net,Ms Word,Npoi,我开始使用NPOI来创建Word文档,我尝试向文档中添加一个简单的图像,但它没有显示出来。不过我可以让文本显示得很好 这是我的代码: var wDoc = new XWPFDocument(); var bytes = File.ReadAllBytes(Settings.Configuration.WebsiteRootPath + "images/logo-large.png"); wDoc.AddPictureData(bytes, (int)PictureType

我开始使用NPOI来创建Word文档,我尝试向文档中添加一个简单的图像,但它没有显示出来。不过我可以让文本显示得很好

这是我的代码:

    var wDoc = new XWPFDocument();
    var bytes = File.ReadAllBytes(Settings.Configuration.WebsiteRootPath + "images/logo-large.png");
    wDoc.AddPictureData(bytes, (int)PictureType.JPEG);
我也试过:

    var wDoc = new XWPFDocument();
    using (Stream s = File.OpenRead(Settings.Configuration.WebsiteRootPath + "images/logo-large.png"))
    {
        wDoc.CreateParagraph().CreateRun().AddPicture(s, (int)PictureType.JPEG, "logo-large.png", 200, 200);
    }
没有运气-两种情况下都是空白文档


我做错了什么?

确保您拥有最新的dll版本2.1.1(2014年6月发布),因为在Word docx中插入图片存在已知问题/支持有限。版本2.1.1正式支持将图片插入Word docx。请参见发行说明中的新功能

确保您拥有最新的dll版本2.1.1(2014年6月发布),因为在Word docx中插入图片存在已知问题/支持有限。版本2.1.1正式支持将图片插入Word docx。请参见发行说明中的新功能

最后,我有了一个.netCore的解决方案。 问题出在生成的document.xml中。以下代码:

  var p0 = doc.Paragraphs[0];
  var r0 = p0.CreateRun();
  r0.AddPicture(image, 6,"logo.png",Units.ToEMU(width),Units.ToEMU(height));
生成xml节点:

   <wp:docPr name="Drawing 0" descr="logo.png"/>
这仅对文件中的第一个图像是必需的。如果您有更多图像,以下代码也可以:

var p0 = doc.Paragraphs[0];
var r0 = p0.CreateRun();
r0.AddPicture(image, 6, "logo.png", Units.ToEMU(width), Units.ToEMU(height)); 
var docPr = ((NPOI.OpenXmlFormats.Dml.WordProcessing.CT_Drawing)r0.GetCTR().Items[0]) .inline[0].docPr;
docPr.id = 1000;
var p1 = doc.Paragraphs[1];
var r1 = p1.CreateRun();
r1.AddPicture(image2, 6, "cat.png", Units.ToEMU(width2), Units.ToEMU(height2));

最后,我有了一个.netCore的解决方案。 问题出在生成的document.xml中。以下代码:

  var p0 = doc.Paragraphs[0];
  var r0 = p0.CreateRun();
  r0.AddPicture(image, 6,"logo.png",Units.ToEMU(width),Units.ToEMU(height));
生成xml节点:

   <wp:docPr name="Drawing 0" descr="logo.png"/>
这仅对文件中的第一个图像是必需的。如果您有更多图像,以下代码也可以:

var p0 = doc.Paragraphs[0];
var r0 = p0.CreateRun();
r0.AddPicture(image, 6, "logo.png", Units.ToEMU(width), Units.ToEMU(height)); 
var docPr = ((NPOI.OpenXmlFormats.Dml.WordProcessing.CT_Drawing)r0.GetCTR().Items[0]) .inline[0].docPr;
docPr.id = 1000;
var p1 = doc.Paragraphs[1];
var r1 = p1.CreateRun();
r1.AddPicture(image2, 6, "cat.png", Units.ToEMU(width2), Units.ToEMU(height2));

你用过这个吗?我对.NET Core和NPOI.Yes的DotNetCore版本有相同的问题。通过更新dll的。我的.net core 2项目中有DotNetCore.NPOI,我也遇到了同样的问题。这就是我问你的原因。你有没有让它起作用?我对.NET Core和NPOI.Yes的DotNetCore版本有相同的问题。通过更新dll的。我的.net core 2项目中有DotNetCore.NPOI,我也遇到了同样的问题。这就是我问的原因。