public async void NapravleniyaMed(List <PersonShortViewModel> persons) { try { // await new ProgressRunner().RunAsync(doAction); await new ProgressRunner().RunAsync( new Action <ProgressHandler>((progressChanged) => { progressChanged(1, "Формирование направлений"); var path = (string.Format("{0}\\_шаблоны\\" + "Направление мед.dotx", AppDomain.CurrentDomain.BaseDirectory)); Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = false }; Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Add(path /*, ReadOnly: false, Visible: true*/); aDoc.Activate(); object missing = Missing.Value; object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToLine; object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToLast; Microsoft.Office.Interop.Word.Range baseRange = aDoc.Content; baseRange.Cut(); Microsoft.Office.Interop.Word.Range range = null; progressChanged(5); var share = 95.0 / persons.Count; foreach (var p in persons) { if (range != null) //!firstRow { range = aDoc.GoTo(ref what, ref which, ref missing, ref missing); range.InsertBreak(Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak); } range = aDoc.GoTo(ref what, ref which, ref missing, ref missing); range.Paste(); range.Find.ClearFormatting(); range.Find.Execute(FindText: "{fio}", ReplaceWith: p.Fio, Replace: Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll); if (p.BirthDat.HasValue) { range.Find.Execute(FindText: "{birthDat}", ReplaceWith: p.BirthDat.Value.ToString("dd.MM.yyyy"), Replace: Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll); } progressChanged(share); } // string otchetDir = @"C:\_provodnikFTP"; // aDoc.SaveAs(FileName: otchetDir + @"\Согласие на обработку персональных данных.DOCX"); wordApp.Visible = true; }) ); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// 添加分页 /// </summary> public void AddPageing(Microsoft.Office.Interop.Word._Document odoc, object bookmark, ref Microsoft.Office.Interop.Word.Range wrdRng, int spaceafter) { object oPos; double dPos = oWord.InchesToPoints(7); do { wrdRng = oDoc.Bookmarks.get_Item(ref bookmark).Range; wrdRng.ParagraphFormat.SpaceAfter = spaceafter; wrdRng.InsertParagraphAfter(); oPos = wrdRng.get_Information (Microsoft.Office.Interop.Word.WdInformation.wdVerticalPositionRelativeToPage); }while (dPos >= Convert.ToDouble(oPos)); object oCollapseEnd = Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd; object oPageBreak = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak; wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertBreak(ref oPageBreak); wrdRng.Collapse(ref oCollapseEnd); wrdRng.InsertParagraphAfter(); }
public void Créer_Document(string Fichier_Modele, bool OptionPDF) { if (Fichier_Modele.Length == 0) { return; } int K = 0; //Nombre de paragraphes dans le document string fichier = Fichier_Modele + ".docx"; App = new Microsoft.Office.Interop.Word.Application(); Doc = new Microsoft.Office.Interop.Word.Document(); //Ouverture du modèle désigné ou celui par défaut if (System.IO.File.Exists(CheminTemp + "\\Modeles\\" + fichier)) { App.Documents.Open(CheminTemp + "\\Modeles\\" + fichier); Doc = App.ActiveDocument; } else { Doc = App.Documents.Add(); Doc.Activate(); } //Traitement des informations foreach (ModeleDoc md_Zone in listeModeleDoc) { //Traitement d'une zone if (md_Zone.Type_Modele == Type_Modele.ZONE) { //Traitement des lignes dans la zone foreach (ModeleDoc md_Ligne in listeModeleDoc) { if (md_Ligne.Type_Modele == Type_Modele.LIGNE && md_Ligne.Parent_ID == md_Zone.ID) { Doc.Paragraphs.Add(); Microsoft.Office.Interop.Word.Range table = Doc.Paragraphs[K + 1].Range; if (md_Ligne.Contenu == "SAUT_LIGNE") { table.InsertBreak(Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak); } else { List <ModeleDoc> listeColonne = new List <ModeleDoc>(); //Détermine le nombre de colonnes composant la ligne foreach (ModeleDoc md_Colonne in listeModeleDoc) { if (md_Colonne.Type_Modele == Type_Modele.COLONNE && md_Colonne.Parent_ID == md_Ligne.ID) { listeColonne.Add(md_Colonne); } } //Création du tableau Microsoft.Office.Interop.Word.Table Tb = Doc.Tables.Add(table, 1, listeColonne.Count); Tb.PreferredWidth = 100; Tb.PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; //Traitement des colonnes dans la ligne for (int col = 0; col < listeColonne.Count; col++) { ModeleDoc md_Col = listeColonne[col]; Tb.Cell(1, col).Range.Text = md_Col.Contenu; //Alignement { if (md_Col.Alignement == Alignement.Gauche) { Tb.Cell(1, col).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft; } if (md_Col.Alignement == Alignement.Centré) { Tb.Cell(1, col).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; } if (md_Col.Alignement == Alignement.Droit) { Tb.Cell(1, col).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; } if (md_Col.Alignement == Alignement.Justifié) { Tb.Cell(1, col).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify; } } //Bordures { if (md_Col.Bordure.Contains("L")) { Tb.Cell(1, col).Range.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft].LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; } if (md_Col.Bordure.Contains("R")) { Tb.Cell(1, col).Range.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight].LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; } if (md_Col.Bordure.Contains("H")) { Tb.Cell(1, col).Range.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop].LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; } if (md_Col.Bordure.Contains("B")) { Tb.Cell(1, col).Range.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom].LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle; } } } //Redimensionne les colonnes for (int col = 0; col < listeColonne.Count; col++) { Tb.Columns[col].PreferredWidthType = Microsoft.Office.Interop.Word.WdPreferredWidthType.wdPreferredWidthPercent; Tb.Columns[col].PreferredWidth = float.Parse(listeColonne[col].Taille.ToString()); } } } } } } //Sauvegarde du fichier { string Nom_Doc = string.Format("{0:yyyyMMddHHmmsssfff}", DateTime.Now); string fichier_dest = CheminTemp + "\\" + Nom_Doc + ".docx"; Doc.SaveAs(fichier_dest); if (OptionPDF) { string fichier_pdf = CheminTemp + "\\" + Nom_Doc + ".pdf"; Doc.ExportAsFixedFormat(fichier_pdf, paramExportFormat, paramOpenAfterExport, paramExportOptimizeFor, paramExportRange, paramStartPage, paramEndPage, paramExportItem, paramIncludeDocProps, paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, paramBitmapMissingFonts, paramUseISO19005_1); System.Diagnostics.Process.Start(fichier_pdf); //Ouverture Doc.SaveAs(fichier_dest); App.Quit(); } else { App.Visible = true; App.Activate(); } } }