zoukankan      html  css  js  c++  java
  • 在.Net下生成Word文档(已测试可以使用)

    环境:Window2003 + Net.2.0

    记住要引入Word的dll文件 Interop.word.dll  (如找不到可以直接根我联系)
    在命名空间还有记得加入using System.Reflection;

    //===========开始生成Word文档===============好麻烦呀这段=========
            private void button5_Click(object sender, EventArgs e)
            {
                //==========以下程序来自http://support.microsoft.com/kb/316384/zh-cn
                object oMissing = System.Reflection.Missing.Value;
                object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */

                //==========开始创建一个Word文档==============
                Word._Application oWord = new Word.Application();
                Word._Document oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,ref oMissing, ref oMissing);
                oWord.Visible = true;

                //在文档开始插入一段信息
                Word.Paragraph oPara1;
                oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
                oPara1.Range.Text = "TT_Article数据库各表说明";
                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.get_Item(ref oEndOfDoc).Range;
                oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
                oPara2.Range.Text = "Heading 2";
                oPara2.Format.SpaceAfter = 6;
                oPara2.Range.InsertParagraphAfter();

                //Insert another paragraph.
                Word.Paragraph oPara3;
                oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
                oPara3 = oDoc.Content.Paragraphs.Add(ref 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.get_Item(ref oEndOfDoc).Range;
                oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref 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.get_Item(ref oEndOfDoc).Range;
                oPara4 = oDoc.Content.Paragraphs.Add(ref 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.get_Item(ref oEndOfDoc).Range;
                oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref 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.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
                do
                {
                    wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
                    wrdRng.ParagraphFormat.SpaceAfter = 6;
                    wrdRng.InsertAfter("A line of text");
                    wrdRng.InsertParagraphAfter();
                    oPos = wrdRng.get_Information
                                   (Word.WdInformation.wdVerticalPositionRelativeToPage);
                }
                while (dPos >= Convert.ToDouble(oPos));
                object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
                object oPageBreak = Word.WdBreakType.wdPageBreak;
                wrdRng.Collapse(ref oCollapseEnd);
                wrdRng.InsertBreak(ref oPageBreak);
                wrdRng.Collapse(ref 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.get_Item(ref oEndOfDoc).Range;
                oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref 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.get_Item(ref oEndOfDoc).Range;
                wrdRng.InsertParagraphAfter();
                wrdRng.InsertAfter("THE END.");

                //Close this form.
                this.Close();

            }

    有兴趣的可以去微软下载Word的VBA帮助文档


    Welcome to the Microsoft Office Word 2003 VBA Language Reference

    Welcome to the Microsoft Office Word 2003 Visual Basic for Applications (VBA) Language Reference. This reference contains conceptual overviews, programming tasks, samples, and references to guide you in developing solutions based on the Microsoft Office Word 2003.

    Publish date of this reference: July, 2004 (version 2003)

    This documentation contains the following sections:

    • What's New Provides a list of new members by object and in alphabetical order.
    • Concepts Provides important concepts for developing custom Office solutions.
    • Reference Provides reference materials for the Office object model.

    ©2003 Microsoft Corporation. All rights reserved.


     

  • 相关阅读:
    西服定制_男装定制_礼服定制【乐裁】专业首选的全国西服定制商城
    简介 | 北京大学校友创业联合会
    脱颖而出_百度百科
    时装剧
    高龄“潮男”优衣库老板柳井正_榜样_奢华主义_YOKA时尚网
    [女装纸样] 《无私奉献》:看数据知道人的体型--看身高体重知道人体数据---个人绝技不断更新
    瑞邦洋服·私人定制 » 瑞邦头等舱
    爱上MVC~AuthorizeAttribute验证不通过如何停止当前上下文
    Js~(function(){})匿名自执行方法的作用
    Js~动态判断PC和手机浏览器
  • 原文地址:https://www.cnblogs.com/kingeric/p/760899.html
Copyright © 2011-2022 走看看