当前位置:编程学习 > C#/ASP.NET >>

C#操作WORD每个段落后面的属性会覆盖前面的

最近在做用C#操作WORD,自动生成文档, 已经实现了,但是要写一个XML文件来配置WORD的格式,XML文件写好,我是一个段落一个MARK那样插的内容,发现前面的属性会覆盖后面的属性。不知道怎么回事,贴上自己的代码,求高手回答,悬赏100分。
         object path;//文件路径变量
         object oRng;
         object oEndOfDoc = "\\endofdoc";
         MSWord.Application wordApp;                    //Word应用程序变量
         MSWord.Document wordDoc;                   //Word文档变量
         path = @"C:\Word_generated.doc";                      //路径
         wordApp = new MSWord.ApplicationClass();  //初始化
        //如果已存在,则删除
        if (File.Exists((string)path))
        {
            File.Delete((string)path);
        }
        Object Nothing = Missing.Value;
        wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
       MSWord.Paragraph oPara1;
      oPara1 = wordDoc.Content.Paragraphs.Add(ref Nothing);
      oPara1.Range.Text = "1     范围";
     //设定字体风格
      if (first_rank_title_fontStyle == "bold")
          oPara1.Range.Font.Bold = 5;
      else if (first_rank_title_fontStyle == "italic")
          oPara1.Range.Font.Italic = 1;
    //设定字体种类
      if (first_rank_title_fontName == "song typeface")
          oPara1.Range.Font.Name = "宋体";
      else if(first_rank_title_fontName=="Lisu")
          oPara1.Range.Font.Name = "隶书";
      if(first_rank_title_fontColor=="black")
      oPara1.Range.Font.Color = MSWord.WdColor.wdColorBlack;
      else if(first_rank_title_fontColor=="red")
      oPara1.Range.Font.Color = MSWord.WdColor.wdColorRed;
      else if (first_rank_title_fontColor == "yellow")
      oPara1.Range.Font.Color = MSWord.WdColor.wdColorYellow;
      else if (first_rank_title_fontColor == "blue")
      oPara1.Range.Font.Color = MSWord.WdColor.wdColorBlue;
      else if (first_rank_title_fontColor == "white")
      oPara1.Range.Font.Color = MSWord.WdColor.wdColorWhite;

      oPara1.Range.Font.Size = Convert.ToInt32(first_rank_title_fontSize);
      oPara1.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
      oPara1.Range.InsertParagraphAfter();

     MSWord.Paragraph oPara1_1;
    oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara1_1= wordDoc.Content.Paragraphs.Add(ref oRng);
    oPara1_1.Range.Text = "      1.1 标识";
    if (second_rank_title_fontName == "song typeface")
        oPara1_1.Range.Font.Name = "宋体";
    else if (second_rank_title_fontName == "Lisu")
        oPara1_1.Range.Font.Name = "隶书";

    oPara1_1.Range.Font.Size = Convert.ToInt32(second_rank_title_fontSize);
    if (second_rank_title_fontStyle == "bold")
        oPara1_1.Range.Font.Bold = 5;
    else if (second_rank_title_fontStyle == "italic")
     oPara1_1.Range.Font.Italic = 1;
    if (second_rank_title_fontColor == "black")
        oPara1_1.Range.Font.Color = MSWord.WdColor.wdColorBlack;
    else if (second_rank_title_fontColor == "red")
        oPara1_1.Range.Font.Color = MSWord.WdColor.wdColorRed;
    else if (second_rank_title_fontColor == "yellow")
        oPara1_1.Range.Font.Color = MSWord.WdColor.wdColorYellow;
    else if (second_rank_title_fontColor == "blue")
        oPara1_1.Range.Font.Color = MSWord.WdColor.wdColorBlue;
    else if (second_rank_title_fontColor == "white")
        oPara1_1.Range.Font.Color = MSWord.WdColor.wdColorWhite;
    oPara1_1.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
    oPara1_1.Range.InsertParagraphAfter();
    MSWord.Paragraph oPara1_2;
    oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara1_2 = wordDoc.Content.Paragraphs.Add(ref oRng);
    oPara1_2.Range.Text = "      1.2 系统概述";
    if (second_rank_title_fontName == "song typeface")
        oPara1_2.Range.Font.Name = "宋体";
    else if (second_rank_title_fontName == "Lisu")
        oPara1_2.Range.Font.Name = "隶书";
    oPara1_2.Range.Font.Size = Convert.ToInt32(second_rank_title_fontSize);
    if (second_rank_title_fontStyle == "bold")
        oPara1_2.Range.Font.Bold = 5;
    else if (second_rank_title_fontStyle == "italic")
        oPara1_2.Range.Font.Italic = 1;
    if (second_rank_title_fontColor == "black")
        oPara1_2.Range.Font.Color = MSWord.WdColor.wdColorBlack;
    else if (second_rank_title_fontColor == "red")
        oPara1_2.Range.Font.Color = MSWord.WdColor.wdColorRed;
    else if (second_rank_title_fontColor == "yellow")
        oPara1_2.Range.Font.Color = MSWord.WdColor.wdColorYellow;
    else if (second_rank_title_fontColor == "blue")
        oPara1_2.Range.Font.Color = MSWord.WdColor.wdColorBlue;
    else if (second_rank_title_fontColor == "white")
        oPara1_2.Range.Font.Color = MSWord.WdColor.wdColorWhite;
    oPara1_2.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
    oPara1_2.Range.InsertParagraphAfter();
    MSWord.Paragraph oPara1_2_content;
    oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara1_2_content = wordDoc.Content.Paragraphs.Add(ref oRng);
    if (second_rank_content_fontName == "song typeface")
        oPara1_2_content.Range.Font.Name = "宋体";
    else if (second_rank_content_fontName == "Lisu")
        oPara1_2_content.Range.Font.Name = "隶书";
    oPara1_2_content.Range.Font.Size = Convert.ToInt32(second_rank_content_fontSize);
    if (second_rank_content_fontStyle == "bold")
        oPara1_2_content.Range.Font.Bold = 5;
    else if (second_rank_content_fontStyle == "italic")
        //oPara1_2_content.Range.Font.Italic = 1;
        if (second_rank_content_fontColor == "black")
            oPara1_2_content.Range.Font.Color = MSWord.WdColor.wdColorBlack;
        else if (second_rank_content_fontColor == "red")
            oPara1_2_content.Range.Font.Color = MSWord.WdColor.wdColorRed;
        else if (second_rank_content_fontColor == "yellow")
            oPara1_2_content.Range.Font.Color = MSWord.WdColor.wdColorYellow;
        else if (second_rank_content_fontColor == "blue")
            oPara1_2_content.Range.Font.Color = MSWord.WdColor.wdColorBlue;
        else if (second_rank_content_fontColor == "white")
            oPara1_2_content.Range.Font.Color = MSWord.WdColor.wdColorWhite;
    oPara1_2_content.Range.Text = "       系统的概述";
    
    oPara1_2_content.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
    oPara1_2_content.Range.InsertParagraphAfter();
    MSWord.Paragraph oPara1_3;
    oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara1_3 = wordDoc.Content.Paragraphs.Add(ref oRng);
    oPara1_3.Range.Text = "      1.3 文档概述";
    if (second_rank_title_fontName == "song typeface")
        oPara1_3.Range.Font.Name = "宋体";
    else if (second_rank_title_fontName == "Lisu")
        oPara1_3.Range.Font.Name = "隶书";
    oPara1_3.Range.Font.Size = Convert.ToInt32(second_rank_title_fontSize);
    if (second_rank_title_fontStyle == "bold")
        oPara1_3.Range.Font.Bold = 5;
    else if (second_rank_title_fontStyle == "italic")
        oPara1_3.Range.Font.Italic = 1;
    if (second_rank_title_fontColor == "black")
        oPara1_3.Range.Font.Color = MSWord.WdColor.wdColorBlack;
    else if (second_rank_title_fontColor == "red")
        oPara1_3.Range.Font.Color = MSWord.WdColor.wdColorRed;
    else if (second_rank_title_fontColor == "yellow")
        oPara1_3.Range.Font.Color = MSWord.WdColor.wdColorYellow;
    else if (second_rank_title_fontColor == "blue")
        oPara1_3.Range.Font.Color = MSWord.WdColor.wdColorBlue;
    else if (second_rank_title_fontColor == "white")
        oPara1_3.Range.Font.Color = MSWord.WdColor.wdColorWhite;
    oPara1_3.Range.Font.Bold = 5;
    oPara1_3.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
    oPara1_3.Range.InsertParagraphAfter();
    MSWord.Paragraph oPara1_3_content;
    oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara1_3_content = wordDoc.Content.Paragraphs.Add(ref oRng);
    oPara1_3_content.Range.Text = "       文档的概述";
    if (second_rank_content_fontName == "song typeface")
        oPara1_3_content.Range.Font.Name = "宋体";
    else if (second_rank_content_fontName == "Lisu")
        oPara1_3_content.Range.Font.Name = "隶书";
    oPara1_3_content.Range.Font.Size = Convert.ToInt32(second_rank_content_fontSize);
    if (second_rank_content_fontStyle == "bold")
        oPara1_3_content.Range.Font.Bold = 5;
    else if (second_rank_content_fontStyle == "italic")
        oPara1_3_content.Range.Font.Italic = 1;
        if (second_rank_content_fontColor == "black")
            oPara1_3_content.Range.Font.Color = MSWord.WdColor.wdColorBlack;
        else if (second_rank_content_fontColor == "red")
            oPara1_3_content.Range.Font.Color = MSWord.WdColor.wdColorRed;
        else if (second_rank_content_fontColor == "yellow")
            oPara1_3_content.Range.Font.Color = MSWord.WdColor.wdColorYellow;
        else if (second_rank_content_fontColor == "blue")
            oPara1_3_content.Range.Font.Color = MSWord.WdColor.wdColorBlue;
        else if (second_rank_content_fontColor == "white")
            oPara1_3_content.Range.Font.Color = MSWord.WdColor.wdColorWhite;
    oPara1_3_content.Range.Font.Bold = 5;
    oPara1_3_content.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphLeft;
    oPara1_3_content.Range.InsertParagraphAfter();
       object format = MSWord.WdSaveFormat.wdFormatDocument;
    wordDoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
    //关闭wordDoc文档对象 
    wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
    //关闭wordApp组件对象 
    wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
    Console.WriteLine(path + " 创建完毕!"); --------------------编程问答-------------------- --------------------编程问答-------------------- 比如,我第一个标题,一级标题设置为斜体,后面就都是斜体了 --------------------编程问答-------------------- 斜体和粗体是不同的东西,不可以相互覆盖吧! --------------------编程问答-------------------- 每写一段就重新更新Range
range=app.ActiveDocument.Paragh.Last.Range
再重新设定 --------------------编程问答--------------------
引用 4 楼 csrwgs 的回复:
每写一段就重新更新Range
range=app.ActiveDocument.Paragh.Last.Range
再重新设定

请问,您能写一段示例代码吗?oRng = wordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
  oPara1_3_content = wordDoc.Content.Paragraphs.Add(ref oRng);这句话就是每次都获取最后一个光标的位置啊!一段段插,现在就是粗体和斜体的那个相互覆盖,其他的都是好好的,求高手解答,解决问题就给分,急啊,实验室的项目!
--------------------编程问答--------------------   word用的少..  不了解
 帮顶下 --------------------编程问答-------------------- 请问楼主解决了没有,我也遇到同样问题了,能否贴出来解决办法
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,