Exemple #1
0
        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); }
        }
Exemple #2
0
        /// <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();
        }
Exemple #3
0
        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();
                }
            }
        }