public static void ExportItem(IExportToWordDocument item, string outputPath, string templatePath) { using (Docx.DocX doc = Docx.DocX.Create(outputPath)) { if (templatePath != null) { doc.ApplyTemplate(templatePath); } item.ExportToWord(doc); doc.Save(); } }
public void ExportToWord() { IExportToWordDocument item = SelectedTreeViewItem as IExportToWordDocument; SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Word Document (*.docx)|*.docx"; bool?result = saveFileDialog.ShowDialog(); if (!result.Value) { return; } var templates = FileBrowserViewModel.Files.Where(i => i.Model.FileType == FileBlob.FILE_TYPE_TEMPLATE).ToList(); if (templates.Count > 0) { FileBlobViewModel defaultTemplate = templates.SingleOrDefault(i => i.Model.id == Model.DefaultTemplateId); SelectDocTemplateDialog dialog = new SelectDocTemplateDialog(DialogOwner, templates, defaultTemplate); result = dialog.ShowDialog(); if (result.HasValue && result.Value) { defaultTemplate = dialog.SelectedTemplate; string templatePath = null; // Save selected template as default. if (defaultTemplate != null) { Model.DefaultTemplateId = defaultTemplate.Model.id; Model.Save(); // Save template to a temp file. templatePath = Path.GetTempFileName(); defaultTemplate.Model.ExportToFile(templatePath); } FlowDocumentExporter.ExportItem(item, saveFileDialog.FileName, templatePath); if (templatePath != null) { File.Delete(templatePath); } MessageBoxResult msgResult = MessageBox.Show("Export complete. Open file now?", "Export Completed", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { Process.Start(new ProcessStartInfo(saveFileDialog.FileName) { UseShellExecute = true }); } } } else { FlowDocumentExporter.ExportItem(item, saveFileDialog.FileName, null); MessageBoxResult msgResult = MessageBox.Show("Export complete. Open file now?", "Export Completed", MessageBoxButton.YesNo, MessageBoxImage.Question); if (msgResult == MessageBoxResult.Yes) { Process.Start(new ProcessStartInfo(saveFileDialog.FileName) { UseShellExecute = true }); } } }