private void btnCreate_Click(object sender, System.EventArgs e) { #region Workbook Intialization //New instance of XlsIO is created.[Equivalent to launching MS Excel with no workbooks open]. //The instantiation process consists of two steps. //Step 1 : Instantiate the spreadsheet creation engine. ExcelEngine excelEngine = new ExcelEngine(); //Step 2 : Instantiate the excel application object. IApplication application = excelEngine.Excel; //An existing template workbook is opened.[Equivalent to the workbook in MS Excel] IWorkbook workbook; string inputPath = GetFullTemplatePath("CreateMacroTemplate.xlsx"); workbook = application.Workbooks.Open(inputPath, ExcelOpenType.Automatic); //The first worksheet object in the worksheets collection is accessed. IWorksheet worksheet = workbook.Worksheets[0]; #endregion #region Create Macro IVbaProject vbaProject = workbook.VbaProject; IVbaModule vbaModule = vbaProject.Modules.Add("Module1", VbaModuleType.StdModule); vbaModule.Code = GetVbaCode(); #endregion try { #region Workbook Save string fileName = ""; if (rdbXLS.Checked) { fileName = "CreateMacro.xls"; workbook.Version = ExcelVersion.Excel97to2003; workbook.SaveAs(fileName); } else if (rdbXLTM.Checked) { fileName = "CreateMacro.xltm"; workbook.SaveAs(fileName); } else if (rdbXLSM.Checked) { fileName = "CreateMacro.xlsm"; workbook.SaveAs(fileName); } #endregion #region Workbook Close and Dispose //Close the workbook. workbook.Close(); excelEngine.Dispose(); #endregion #region View the Workbook //Message box confirmation to view the created document. if (MessageBox.Show("Do you want to view the workbook?", "Workbook has been created", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { try { //Launching the Excel file using the default Application.[MS Excel Or Free ExcelViewer] #if NETCORE System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo = new System.Diagnostics.ProcessStartInfo(fileName) { UseShellExecute = true }; process.Start(); #else Process.Start(fileName); #endif } catch (Win32Exception ex) { MessageBox.Show("Ms Excel is not installed in this system"); Console.WriteLine(ex.ToString()); } } #endregion } catch { MessageBox.Show("Sorry, Excel can't open two workbooks with the same name at the same time.\nPlease close the workbook and try again.", "File is already open", MessageBoxButtons.OK); } }
private async void btnGenerateExcel_Click(object sender, RoutedEventArgs e) { StorageFile storageFile; if (!(Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))) { FileSavePicker savePicker = new FileSavePicker(); savePicker.SuggestedStartLocation = PickerLocationId.Desktop; savePicker.SuggestedFileName = "Edit"; if (rdBtnXls.IsChecked.Value) { savePicker.FileTypeChoices.Add("Excel Files", new List <string>() { ".xls" }); } else if (rdBtnXltm.IsChecked.Value) { savePicker.FileTypeChoices.Add("Excel Files", new List <string>() { ".xltm" }); } else { savePicker.FileTypeChoices.Add("Excel Files", new List <string>() { ".xlsm", }); } storageFile = await savePicker.PickSaveFileAsync(); } else { StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; if (rdBtnXls.IsChecked.Value) { storageFile = await local.CreateFileAsync("Edit.xls", CreationCollisionOption.ReplaceExisting); } else if (rdBtnXltm.IsChecked.Value) { storageFile = await local.CreateFileAsync("Edit.xltm", CreationCollisionOption.ReplaceExisting); } else { storageFile = await local.CreateFileAsync("Edit.xlsm", CreationCollisionOption.ReplaceExisting); } } if (storageFile == null) { return; } //Step 1 : Instantiate the spreadsheet creation engine. ExcelEngine excelEngine = new ExcelEngine(); //Step 2 : Instantiate the excel application object. IApplication application = excelEngine.Excel; Assembly assembly = typeof(EditMacro).GetTypeInfo().Assembly; string resourcePath = "Syncfusion.SampleBrowser.UWP.XlsIO.XlsIO.Tutorials.Samples.Assets.Resources.Templates.EditMacroTemplate.xltm"; Stream fileStream = assembly.GetManifestResourceStream(resourcePath); IWorkbook workbook = await application.Workbooks.OpenAsync(fileStream); workbook.Version = ExcelVersion.Excel2016; #region VbaProject //Access Vba Project from workbook IVbaProject vbaProject = workbook.VbaProject; IVbaModule vbaModule = vbaProject.Modules["Module1"]; vbaModule.Code = vbaModule.Code.Replace("xlAreaStacked", "xlLine"); #endregion #region Saving the workbook ExcelSaveType type = ExcelSaveType.SaveAsMacro; if (storageFile.Name.EndsWith(".xls")) { workbook.Version = ExcelVersion.Excel97to2003; type = ExcelSaveType.SaveAsMacro; } else if (storageFile.Name.EndsWith(".xltm")) { type = ExcelSaveType.SaveAsMacroTemplate; } await workbook.SaveAsAsync(storageFile, type); workbook.Close(); excelEngine.Dispose(); #endregion #region Launching the saved workbook MessageDialog msgDialog = new MessageDialog("Do you want to view the Document?", "File has been created successfully."); UICommand yesCmd = new UICommand("Yes"); msgDialog.Commands.Add(yesCmd); UICommand noCmd = new UICommand("No"); msgDialog.Commands.Add(noCmd); IUICommand cmd = await msgDialog.ShowAsync(); if (cmd == yesCmd) { // Launch the saved file bool success = await Windows.System.Launcher.LaunchFileAsync(storageFile); } #endregion }