如何使用OpenXML SDK在Excel中附加.eml文件?

时间:2019-12-16 03:34:34

标签: c# openxml openxml-sdk

我正在使用此代码。它确实附加了文件,但是如果使用MS Excel应用程序打开文件,我什么也看不到。

            string targetFile = "test returns tracker.xlsx";
            string placeholder = @"placeholder.PNG";
            string embed = @"embed.docx";
            using (SpreadsheetDocument document = SpreadsheetDocument.Open(targetFile, true))
            {
                WorkbookPart workbookpart = document.WorkbookPart;
                WorksheetPart sheet1 = workbookpart.WorksheetParts.First();   


                EmbeddedPackagePart newEmbeddedPackagePart = sheet1.AddNewPart<EmbeddedPackagePart>(@"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "rId100");
                newEmbeddedPackagePart.FeedData(File.Open(embed, FileMode.Open));
                document.WorkbookPart.Workbook.Save();
                // Close the document handle.
                document.Close();
            }

1 个答案:

答案 0 :(得分:1)

newEmbeddedPackagePart.FeedData(File.Open(embed...

代码中的问题与FeedData有关。 File.Open方法为您提供一个流,但是它是空的。您需要先查找数据,然后才能期望将在excel中保存为嵌入式文档

寻找的例子是

    FileStream SourceStream = File.Open(filename, FileMode.Open);
    SourceStream.Seek(0, SeekOrigin.End);

在您的FeedData中使用此源流使其正常工作。

newEmbeddedPackagePart.FeedData(SourceStream);

现在您可以保存工作簿并关闭文档

参考文献:

  1. http://www.ericwhite.com/blog/forums/topic/adding-workbook-to-chart-as-an-embeddedpackagepart/

  2. https://docs.microsoft.com/en-us/dotnet/api/system.io.filestream?view=netframework-4.8