Пример #1
0
        /// <summary>
        /// Updates the embedded object.
        /// </summary>
        /// <returns></returns>
        protected string UpdateEmbeddedObject()
        {
            EmbeddedPackagePart embeddedPackagePart = chartPart.EmbeddedPackagePart;
            string sheetName = string.Empty;

            if (embeddedPackagePart != null)
            {
                using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(embeddedPackagePart.GetStream(), true))
                {
                    SharedStringTablePart sharedStringTablePart;
                    SpreadSheet.Sheet     sheet = spreadsheetDoc.WorkbookPart.Workbook.Sheets.FirstOrDefault() as SpreadSheet.Sheet;
                    string sheetId = sheet.Id;
                    sheetName = sheet.Name;

                    WorksheetPart         wsp       = (WorksheetPart)spreadsheetDoc.WorkbookPart.Parts.Where(pt => pt.RelationshipId == sheetId).FirstOrDefault().OpenXmlPart;
                    SpreadSheet.SheetData sheetData = wsp.Worksheet.Elements <SpreadSheet.SheetData>().FirstOrDefault();

                    if (spreadsheetDoc.WorkbookPart.GetPartsOfType <SharedStringTablePart>().Count() > 0)
                    {
                        sharedStringTablePart = spreadsheetDoc.WorkbookPart.GetPartsOfType <SharedStringTablePart>().First();

                        if (sharedStringTablePart.SharedStringTable != null)
                        {
                            sharedStringTablePart.SharedStringTable.RemoveAllChildren <SpreadSheet.SharedStringItem>();
                        }
                    }
                    else
                    {
                        sharedStringTablePart = spreadsheetDoc.WorkbookPart.AddNewPart <SharedStringTablePart>();
                    }

                    sheetData.RemoveAllChildren <SpreadSheet.Row>();
                    UpdateEmbeddedObject(sheetData, sharedStringTablePart);

                    wsp.Worksheet.Save();
                }
            }

            return(sheetName);
        }