Beispiel #1
0
 public Reporter()
 {
     this._template = "";
     this.oMissing  = Missing.Value;
     this.oFalse    = false;
     this.wordApp   = null;
     this.wordDoc   = null;
 }
Beispiel #2
0
 public void setTemplate(String template)
 {
     if (File.Exists(template))
     {
         this.wordApp         = new Word.Application();
         this.wordApp.Visible = false;
         this._template       = template;
         object oTemplate = this._template;
         wordDoc = wordApp.Documents.Add(oTemplate, oMissing, oMissing, oMissing);
     }
     //break;
 }
        /// <summary>
        /// before whatever initial operations are required to open the filestream
        /// or whatever (in the case of Word Auto, will require global variables)
        /// </summary>
        protected override int InitializeDocument(ControlFile _controlFile)
        {
            //create a word object instead of globals, ie., WOrd(ControlFIle)
            base.InitializeDocument(_controlFile);

            oWord = new Word.Application();
            oWord.Visible = true;
            object template = controlFile.Template;
            oDoc = oWord.Documents.Add( template,  oMissing,
                 oMissing,  oMissing);

            oSelection = oWord.Selection;

            // load defaults from tempalte

            try
            {
                oHeader1 = controlFile.Heading1;
                oHeader2 = controlFile.Heading2; // write getmethods?
                oHeader3 = controlFile.Heading3;
                oHeader4 = controlFile.Heading4;
                oHeader5 = controlFile.Heading5;
                oBullet = controlFile.Bullet;
                oTitle = controlFile.ChapterTitle;
                oStyle = controlFile.BodyText;
                oBulletNumber = controlFile.BulletNumber;
                oTableStyle = controlFile.TableStyle;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.ToString());
                return -1;
            }

            // test if style exists before being used
            bool bExists = false;
            foreach (Word.Style style in oDoc.Styles)
            {
                if (style.NameLocal == (oStyle).ToString())
                {
                    bExists = true;
                }
            }
            if (false == bExists)
            {
                NewMessage.Show(oStyle.ToString() + " did not exist");
            }

            oSelection.Style = oStyle;// (March 2013 - this might be reasonable replacement
            // set defaults
             //   oSelection.set_Style(ref oStyle); //this never seemed to happen 12/12/2010 (FIXED! The name was wrong, trying to come up with a better error check system
            Word.Style oSetStyle = (Word.Style)oSelection.Style;

            /* DId not work to test
            if (oSetStyle.NameLocal != (oStyle).ToString())
            {
                NewMessage.Show(oStyle.ToString() + " did not exist");
            }*/

            return 1;
        }
        /// <summary>
        /// just an example function
        /// </summary>
        public void example()
        {
            //Start Word and create a new document.
            Word._Application oWord;
            Word._Document oDoc;
            oWord = new Word.Application();
            oWord.Visible = true;
            oDoc = oWord.Documents.Add( oMissing,  oMissing,
                 oMissing,  oMissing);

            //Insert a paragraph at the beginning of the document.
            Word.Paragraph oPara1;
            oPara1 = oDoc.Content.Paragraphs.Add( oMissing);
            object styleHeading1 = "Heading 1";
            oPara1.Style =  styleHeading1;
            oPara1.Range.Text = "Heading 1";
            oPara1.Range.Font.Bold = 1;
            oPara1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.
            oPara1.Range.InsertParagraphAfter();

            //Insert a paragraph at the end of the document.
            Word.Paragraph oPara2;
            object oRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            oPara2 = oDoc.Content.Paragraphs.Add( oRng);
            oPara2.Range.Text = "Heading 2";
            oPara2.Format.SpaceAfter = 6;
            oPara2.Range.InsertParagraphAfter();

            //Insert another paragraph.
            Word.Paragraph oPara3;
            oRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            oPara3 = oDoc.Content.Paragraphs.Add( oRng);
            oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";
            oPara3.Range.Font.Bold = 0;
            oPara3.Format.SpaceAfter = 24;
            oPara3.Range.InsertParagraphAfter();

            //Insert a 3 x 5 table, fill it with data, and make the first row
            //bold and italic.
            Word.Table oTable;
            Word.Range wrdRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            oTable = oDoc.Tables.Add(wrdRng, 3, 5,  oMissing,  oMissing);
            oTable.Range.ParagraphFormat.SpaceAfter = 6;
            int r, c;
            string strText;
            for (r = 1; r <= 3; r++)
                for (c = 1; c <= 5; c++)
                {
                    strText = "r" + r + "c" + c;
                    oTable.Cell(r, c).Range.Text = strText;
                }
            oTable.Rows[1].Range.Font.Bold = 1;
            oTable.Rows[1].Range.Font.Italic = 1;

            //Add some text after the table.
            Word.Paragraph oPara4;
            oRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            oPara4 = oDoc.Content.Paragraphs.Add( oRng);
            oPara4.Range.InsertParagraphBefore();
            oPara4.Range.Text = "And here's another table:";
            oPara4.Format.SpaceAfter = 24;
            oPara4.Range.InsertParagraphAfter();

            //Insert a 5 x 2 table, fill it with data, and change the column widths.
            wrdRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            oTable = oDoc.Tables.Add(wrdRng, 5, 2,  oMissing,  oMissing);
            oTable.Range.ParagraphFormat.SpaceAfter = 6;
            for (r = 1; r <= 5; r++)
                for (c = 1; c <= 2; c++)
                {
                    strText = "r" + r + "c" + c;
                    oTable.Cell(r, c).Range.Text = strText;
                }
            oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2
            oTable.Columns[2].Width = oWord.InchesToPoints(3);

            //Keep inserting text. When you get to 7 inches from top of the
            //document, insert a hard page break.
            object oPos;
            double dPos = oWord.InchesToPoints(7);
            oDoc.Bookmarks[ oEndOfDoc].Range.InsertParagraphAfter();
            do
            {
                wrdRng = oDoc.Bookmarks[ oEndOfDoc].Range;
                wrdRng.ParagraphFormat.SpaceAfter = 6;
                wrdRng.InsertAfter("A line of text");
                wrdRng.InsertParagraphAfter();
                oPos = wrdRng.get_Information
                               (Word.Enums.WdInformation.wdVerticalPositionRelativeToPage);
            }
            while (dPos >= Convert.ToDouble(oPos));
            object oCollapseEnd = Word.Enums.WdCollapseDirection.wdCollapseEnd;
            object oPageBreak = Word.Enums.WdBreakType.wdPageBreak;
            wrdRng.Collapse( oCollapseEnd);
            wrdRng.InsertBreak( oPageBreak);
            wrdRng.Collapse( oCollapseEnd);
            wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
            wrdRng.InsertParagraphAfter();

            //Insert a chart.
            //            Word.InlineShape oShape;
            //            object oClassType = "MSGraph.Chart.8";
            //            wrdRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            //            oShape = wrdRng.InlineShapes.AddOLEObject( oClassType,  oMissing,
            //                 oMissing,  oMissing,  oMissing,
            //                 oMissing,  oMissing,  oMissing);

            //Demonstrate use of late bound oChart and oChartApp objects to
            //manipulate the chart object with MSGraph.
            //            object oChart;
            //            object oChartApp;
            //            oChart = oShape.OLEFormat.Object;
            //            oChartApp = oChart.GetType().InvokeMember("Application",
            //                BindingFlags.GetProperty, null, oChart, null);
            //
            //            //Change the chart type to Line.
            //            object[] Parameters = new Object[1];
            //            Parameters[0] = 4; //xlLine = 4
            //            oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,
            //                null, oChart, Parameters);
            //
            //            //Update the chart image and quit MSGraph.
            //            oChartApp.GetType().InvokeMember("Update",
            //                BindingFlags.InvokeMethod, null, oChartApp, null);
            //            oChartApp.GetType().InvokeMember("Quit",
            //                BindingFlags.InvokeMethod, null, oChartApp, null);
            //            //... If desired, you can proceed from here using the Microsoft Graph
            //            //Object model on the oChart and oChartApp objects to make additional
            //            //changes to the chart.
            //
            //            //Set the width of the chart.
            //            oShape.Width = oWord.InchesToPoints(6.25f);
            //            oShape.Height = oWord.InchesToPoints(3.57f);

            //Add text after the chart.
            wrdRng = oDoc.Bookmarks[ oEndOfDoc].Range;
            wrdRng.InsertParagraphAfter();
            wrdRng.InsertAfter("THE END.");

            //Close this form.
        }