/// <summary> /// Save a PowerPoint presentation /// </summary> /// <param name="presentationToSave">Handle to PPT.Presentation object to save</param> /// <param name="pathAndFileName">Path (including filename) of where to save the presentation</param> /// <param name="fileType">PPT.PpSaveAsFileType object</param> /// <param name="embedTrueTypeFonts">Whether to embed TrueType fonts</param> public void SavePresentationAs( PPT.Presentation presentationToSave, string pathAndFileName, PPT.PpSaveAsFileType fileType, bool embedTrueTypeFonts) { if (embedTrueTypeFonts) { presentationToSave.SaveAs(pathAndFileName, fileType, OFFICE.MsoTriState.msoTrue); return; } presentationToSave.SaveAs(pathAndFileName, fileType, OFFICE.MsoTriState.msoFalse); }
public static DataSet makeStructure(PowerPoint.Presentation pptPrest, DataSet newSheets, DataSet structure) { Console.WriteLine("--> Processing..."); List<string> slidesIndex = getSlidesIndex(structure); for (int i = 0; i < newSheets.Tables.Count; i++) { DataTable dt = newSheets.Tables[i]; for (int j = 2; j < dt.Rows.Count; j++) { if (((dynamic)dt.Rows[j][0])["text"] == String.Empty) { continue; } slidesIndex = getSlidesIndex(structure); string newTableName = dt.TableName.ToString() + "-" + ((dynamic)dt.Rows[j])[0]["text"]; int firstPageOfGame = slidesIndex.FindIndex(param => param.Equals(dt.TableName)); int lastPageOfGame = slidesIndex.FindLastIndex(param => param.Equals(dt.TableName)); if (firstPageOfGame != -1) { bool pageFound = false; for (int k = lastPageOfGame; k >= firstPageOfGame; k--) { if (structure.Tables[k].TableName.StartsWith(newTableName)) { pageFound = true; string foundPageName = structure.Tables[k].TableName; //web game if ((gameConfig[dt.TableName])[1] == 0) { structure.Tables[k].Rows.Add(dt.Rows[j].ItemArray); SlidesEditer.addRow(pptPrest, k + 2 + gamesCount, dt.Rows[j]); break; } //mobile game else { if (structure.Tables[k].Rows.Count > 3) { string regex = @"((\d+))"; Match channelIndex = Regex.Match(foundPageName, regex); if (channelIndex.Length == 0) { newTableName += "(2)"; } else { newTableName += "(" + (Convert.ToInt32(channelIndex.Groups[1].Value) + 1).ToString() + ")"; } DataTable newTable = dt.Clone(); newTable.TableName = newTableName; newTable.Rows.Add(dt.Rows[0].ItemArray); newTable.Rows.Add(dt.Rows[j].ItemArray); structure = insertTableToSet(structure, newTable, k + 1); SlidesEditer.addSilde(pptPrest, k + 3 + gamesCount, newTable.TableName, dt.Rows[0], dt.Rows[j], gameList.IndexOf(dt.TableName)); break; } else { structure.Tables[k].Rows.Add(dt.Rows[j].ItemArray); SlidesEditer.addRow(pptPrest, k + 2 + gamesCount, dt.Rows[j]); break; } } } } if (pageFound == false) { DataTable newTable = dt.Clone(); newTable.TableName = newTableName; newTable.Rows.Add(dt.Rows[0].ItemArray); newTable.Rows.Add(dt.Rows[j].ItemArray); structure = insertTableToSet(structure, newTable, lastPageOfGame + 1); SlidesEditer.addSilde(pptPrest, lastPageOfGame + 3 + gamesCount, newTable.TableName, dt.Rows[0], dt.Rows[j], gameList.IndexOf(dt.TableName)); continue; } } else // current game does not exist; { if (structure.Tables.Count == 0) { DataTable newTable = dt.Clone(); newTable.TableName = newTableName; newTable.Rows.Add(dt.Rows[0].ItemArray); newTable.Rows.Add(dt.Rows[j].ItemArray); structure.Tables.Add(newTable); SlidesEditer.addSilde(pptPrest, 2 + gamesCount, newTable.TableName, dt.Rows[0], dt.Rows[j], gameList.IndexOf(dt.TableName)); } else { int insertIndex = 0; for (int a = structure.Tables.Count - 1; a >= 0; a--) { string pageGame = ((structure.Tables[a].TableName).Split(new char[1] { '-' }))[0]; int pageGameIndex = ((dynamic)gameConfig[pageGame])[0]; int indexOfGame = ((dynamic)gameConfig[dt.TableName])[0]; if (indexOfGame > pageGameIndex) { insertIndex = a + 1; break; } } DataTable newTable = dt.Clone(); newTable.TableName = newTableName; newTable.Rows.Add(dt.Rows[0].ItemArray); newTable.Rows.Add(dt.Rows[j].ItemArray); structure = insertTableToSet(structure, newTable, insertIndex); SlidesEditer.addSilde(pptPrest, insertIndex + 2 + gamesCount, newTable.TableName, dt.Rows[0], dt.Rows[j], gameList.IndexOf(dt.TableName)); continue; } } } } //export slidemaps to json /* string json = JsonConvert.SerializeObject(structure, Formatting.Indented); File.WriteAllText(structureFile, json); */ string archivedSlidesPath = getArchivedFilePath("Sample.pptx", archivedFolder); pptPrest.SaveAs(archivedSlidesPath); pptPrest.SaveAs(projectSlides); Console.WriteLine("--> Mission Success."); Console.WriteLine("--> Backup Data..."); string newSlidesMapPath = getArchivedFilePath("SlidesMap.xlsx", archivedFolder); ExcelWriter.ExportDataSet(structure, newSlidesMapPath); if(File.Exists(projectFolder + "\\" + "SlidesMap.xlsx")) { File.Delete(projectFolder + "\\" + "SlidesMap.xlsx"); } File.Copy(newSlidesMapPath, projectFolder + "\\" + "SlidesMap.xlsx"); Console.WriteLine("--> Backup Completed."); Console.WriteLine("--"); return structure; }