// Embeds the add-in into a file of the specified type. public static void EmbedAddin(string fileType, MemoryStream memoryStream, string snippetID) { // Each Office file type has its own *Document class in the OOXML SDK. switch (fileType) { case "Excel": using (var spreadsheet = SpreadsheetDocument.Open(memoryStream, true)) { spreadsheet.DeletePart(spreadsheet.WebExTaskpanesPart); var webExTaskpanesPart = spreadsheet.AddWebExTaskpanesPart(); OOXMLHelper.CreateWebExTaskpanesPart(webExTaskpanesPart, snippetID); } break; case "Word": using (var document = WordprocessingDocument.Open(memoryStream, true)) { var webExTaskpanesPart = document.AddWebExTaskpanesPart(); OOXMLHelper.CreateWebExTaskpanesPart(webExTaskpanesPart, snippetID); } break; case "PowerPoint": using (var slidedeck = PresentationDocument.Open(memoryStream, true)) { var webExTaskpanesPart = slidedeck.AddWebExTaskpanesPart(); OOXMLHelper.CreateWebExTaskpanesPart(webExTaskpanesPart, snippetID); } break; default: throw new Exception("Invalid File Type"); } }
protected void btnUpload_Click(object sender, EventArgs e) { if (FileUploadControl.HasFile) { try { // The OOXML SDK has different classes for the different Office // file types, so the code needs to know which classes to use. // So cache the Office file type; for example "Excel". var file = new FileInfo(FileUploadControl.FileName); Session["FileType"] = GetFileType(file); if (Session["FileType"] != null) { using (MemoryStream memoryStream = new MemoryStream()) { memoryStream.Write(FileUploadControl.FileBytes, 0, FileUploadControl.FileBytes.Length); // Validate the file. Throws exception if the file is not valid. OOXMLHelper.ValidateOfficeFile(Session["FileType"].ToString(), memoryStream); lblUploadOutcome.Text = "File uploaded successfully"; Session["ByteArray"] = FileUploadControl.FileBytes; Session["UploadedFileName"] = FileUploadControl.FileName; } } else { lblUploadOutcome.Text = "You must choose an Office file with an extension of .xlsx, .docx, or .pptx."; Session["ByteArray"] = null; Session["UploadedFileName"] = null; } } catch (Exception ex) { lblUploadOutcome.Text = "ERROR: " + ex.Message.ToString(); Session["ByteArray"] = null; Session["UploadedFileName"] = null; } } else { lblUploadOutcome.Text = "You have not specified a file."; Session["ByteArray"] = null; Session["UploadedFileName"] = null; } }