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



我正在使用这段代码。它确实附加了文件,但是如果我使用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();
}
newEmbeddedPackagePart.FeedData(File.Open(embed...

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

查找的示例为

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

在源数据中使用此源流以使其正常工作。

newEmbeddedPackagePart.FeedData(SourceStream);

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

引用:

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

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

最新更新