最近在做用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.Books.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.Books.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.Books.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.Books.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.Books.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 + " 创建完毕!");
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.Books.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.Books.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.Books.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.Books.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.Books.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 + " 创建完毕!");
解决方案 »
- 关于 画面刷新是留下的残影和闪烁
- TREE里如何取得所点节点同级的第一个节点?
- c# form 想自定义dataGridView的一些功能,但是缺少关键的地方,请协助,谢谢
- MessageBox能不能只显示一个“Cancel”按钮?
- web控件和html控件到底有什么区加别
- 100高分紧急求救.net高手:C# 提取HTML源码元素坐标/属性(width,height)
- c#初级问题,有关文件类型问题!
- 关于form之间传递数据
- 数据库问题!
- 如何判断"D:\" 是光驱还是硬盘?
- 在webBrowser中显示桌面上的文件,我想通过按钮读取鼠标选择的文件名称
- 从客户端 中检测到有潜在危险的 Request.Form 值
range=app.ActiveDocument.Paragh.Last.Range
再重新设定
oPara1_3_content = wordDoc.Content.Paragraphs.Add(ref oRng);这句话就是每次都获取最后一个光标的位置啊!一段段插,现在就是粗体和斜体的那个相互覆盖,其他的都是好好的,求高手解答,解决问题就给分,急啊,实验室的项目!