我想将在内存中创建的工作簿连接到PPT图表。我已经创建了该工作簿(如果完全正确,我不确定),并且我需要以某种方式将其附加到图表和整个PP包。将内部工作簿添加到PP图表
MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);
WorkbookPart wbPart= spreadsheetDocument.AddWorkbookPart();
// create the worksheet
WorksheetPart wsPart= wbPart.AddNewPart<WorksheetPart>();
wsPart.Worksheet = new Worksheet(new SheetData());
Worksheet ws=wsPart.Worksheet;
ChartSpace chartSpace=chartPart.ChartSpace;
List<StringReference> dataReferences = chartSpace.Descendants<StringReference>().ToList();
if (dataReferences!=null)
{
Support.SupOpenXML.FillWorksheetWithChartData(wsPart.Worksheet, dataReferences);
}
ws.Save();
memoryStream.Seek(0, SeekOrigin.Begin);
var sr = new StreamReader(memoryStream);
string myStr = sr.ReadToEnd();
chartPart.AddEmbeddedPackagePart(myStr);
上次操作给我一个错误,myStr中有一些奇怪的值。我应该在代码中更改哪些内容才能工作?我应该改变什么样的关系才能发挥作用?
流:"PK\0\0\0\b\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/workbook.xml ?\0(?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PK\n\0\0\0\0\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0_rels/.rels ?\0(?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PK\0\0\0\b\0*~hH????\0\0\0\0a\0\0\0\0xl/worksheets/sheet.xml ?\0(?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PK\0\0\0\b\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/_rels/workbook.xml.rels ?\0(?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PK-\0\0\0\0\b\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/workbook.xmlPK-\0\n\0\0\0\0\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0\0\0I\0\0\0_rels/.relsPK-\0\0\0\0\b\0*~hH????\0\0\0\0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\0\0\0xl/worksheets/sheet.xmlPK-\0\0\0\0\b\0*~hH\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\0\0\0xl/_rels/workbook.xml.relsPK\0\0\0\0\0\0\0\03\0\0\0\0"
不应AddEmbeddedPackagePart第一是一个对象像在[这个教程](https://blogs.msdn.microsoft.com/brian_jones/2009/06/30/embedding-an-open-xml-file-in-另外,开放式XML的文件/),那么你可以用流调用了feeddata上呢? –
我在路上,增加一条,作为它在本教程中,但嵌入的文件没有显示为Excel文件只是作为一个“package.bin”。我可以将它解压缩,它看起来再正常。 – buks