将txt文件保存在Excel电子表格中(xlsx容器)

时间:2014-05-23 08:16:21

标签: c# excel openxml

我希望能够在xlsx文件中包含一些原始数据文件(txt)。我认为它应该是可能的,因为图像也可以包括在内。但是,我还没有找到有关如何执行此操作的任何文档。 (如果我可以使用Open XML库做到这一点会更好。)

我发现了一个关于堆栈溢出的问题+答案,听起来很有希望,但我没有为我(或电子表格)工作。

https://stackoverflow.com/a/3128463/727061

编辑:似乎我犯了一个错误,导致Excel文件损坏,重试上面的解决方案后工作正常!

1 个答案:

答案 0 :(得分:0)

在研究使用此答案生成的文件后:https://stackoverflow.com/a/3128463/727061我发现了如何使用Open XML将文件添加到电子表格中。

C#:

// base64 encoded data
string base64Data = "ZG9lIG1paiBtYWFyIHdhdCBleHRyYSB0ZWtzdA==";

// create a spreadsheet document
val spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);

// initialize spreadsheet here

// add data to spreadsheet document
ExtendedPart ePart = this.spreadsheetDocument.WorkbookPart.AddExtendedPart("http://schemas.microsoft.com/office/2007/relationships/txt", "custom/txt", ".txt", "rId1");
System.IO.Stream data = GetBinaryDataStream(base64Data);
ePart.FeedData(data);
data.Close();

// retreive all extended data parts
val extendedParts = spreadsheetDocument.WorkbookPart.GetPartsOfType<ExtendedPart>().ToList();

// list those parts
Console.Writeline("Extended parts in file");
foreach(ExtendedPart p in extendedParts)
{
    Console.writeline(this.spreadsheetDocument.WorkbookPart.GetIdOfPart(p));
    Console.writeline("-----------------");
    Console.writeline(new StreamReader(elem.GetStream()).ReadToEnd());
}