Microsoft.Office.Interop.Word 创建word

转载:http://www.cnblogs.com/chenbg2001/archive/2010/03/14/1685746.html

功能总结或者完善。

一、添加页眉

using  System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word; namespace WordCreateDLL
{
public class AddHeader
{
public static void AddSimpleHeader(Application WordApp, string HeaderText)
{
//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;//设置左对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;
}
public static void AddSimpleHeader(Application WordApp, string HeaderText, WdParagraphAlignment wdAlign)
{
//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
//WordApp.Selection.Font.Color = WdColor.wdColorDarkRed;//设置字体颜色
WordApp.Selection.ParagraphFormat.Alignment = wdAlign;//设置左对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;
}
public static void AddSimpleHeader(Application WordApp, string HeaderText, WdParagraphAlignment wdAlign,WdColor fontcolor, float fontsize)
{
//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
WordApp.Selection.Font.Color =fontcolor;//设置字体颜色
WordApp.Selection.Font.Size = fontsize;//设置字体大小
WordApp.Selection.ParagraphFormat.Alignment = wdAlign;//设置对齐方式
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;
} }
}

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
namespace WordCreateDLL
{ public class AddHeader { public static void
AddSimpleHeader(Application WordApp,string HeaderText) { //添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
WordApp.Selection.ParagraphFormat.Alignment =
WdParagraphAlignment.wdAlignParagraphLeft;//设置左对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; }
public static void AddSimpleHeader(Application WordApp, string
HeaderText, WdParagraphAlignment wdAlign) { //添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
//WordApp.Selection.Font.Color = WdColor.wdColorDarkRed;//设置字体颜色
WordApp.Selection.ParagraphFormat.Alignment = wdAlign;//设置左对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; }
public static void AddSimpleHeader(Application WordApp, string
HeaderText, WdParagraphAlignment wdAlign,WdColor fontcolor,float
fontsize) { //添加页眉 WordApp.ActiveWindow.View.Type =
WdViewType.wdOutlineView; WordApp.ActiveWindow.View.SeekView =
WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(HeaderText);
WordApp.Selection.Font.Color =fontcolor;//设置字体颜色
WordApp.Selection.Font.Size = fontsize;//设置字体大小
WordApp.Selection.ParagraphFormat.Alignment = wdAlign;//设置对齐方式
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; } }
}

 

二、插入图片

 

using  System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word; namespace WordCreateDLL
{
public class AddPic
{
public static void AddSimplePic(Document WordDoc, string FName, float Width, float Height, object An, WdWrapType wdWrapType)
{
//插入图片
string FileName = @FName; //图片所在路径
object LinkToFile = false ;
object SaveWithDocument = true ;
object Anchor = An;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = Width;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = Height;//图片高度
//将图片设置为四周环绕型
Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = wdWrapType;
} }
}

 

using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
namespace WordCreateDLL
{ public class AddPic { public static void AddSimplePic(Document
WordDoc, string FName, float Width, float Height, object An, WdWrapType
wdWrapType) { //插入图片 string FileName = @FName;//图片所在路径 object
LinkToFile = false; object SaveWithDocument = true; object Anchor = An;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName,
ref LinkToFile, ref SaveWithDocument, ref Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = Width;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height =
Height;//图片高度 //将图片设置为四周环绕型 Microsoft.Office.Interop.Word.Shape s =
WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = wdWrapType; } }
}

 

三、插入表格

 

using  System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word; namespace WordCreateDLL
{
public class AddTable
{
public static void AddSimpleTable(Application WordApp, Document WordDoc, int numrows, int numcolumns, WdLineStyle outStyle, WdLineStyle intStyle)
{
Object Nothing = System.Reflection.Missing.Value;
//文档中创建表格
Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, numrows, numcolumns, ref Nothing, ref Nothing);
//设置表格样式
newTable.Borders.OutsideLineStyle = outStyle;
newTable.Borders.InsideLineStyle = intStyle;
newTable.Columns[1].Width = 100f;
newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width = 105f; //填充表格内容
newTable.Cell(1, 1).Range.Text = "产品详细信息表" ;
newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
//合并单元格
newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
WordApp.Selection.Cells.VerticalAlignment =WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中 //填充表格内容
newTable.Cell(2, 1).Range.Text = "产品基本信息" ;
newTable.Cell(2, 1).Range.Font.Color =WdColor.wdColorDarkBlue;//设置单元格内字体颜色
//合并单元格
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment =WdCellVerticalAlignment.wdCellAlignVerticalCenter; //填充表格内容
newTable.Cell(3, 1).Range.Text = "品牌名称:" ;
newTable.Cell(3, 2).Range.Text = "品牌名称:" ;
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = WdUnits.wdLine;
object moveCount = 5;
object moveExtend = WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge(); //插入图片
string FileName = @ "C:\1.jpg" ; //图片所在路径
object Anchor = WordDoc.Application.Selection.Range;
float Width = 200f; //图片宽度
float Height = 200f; //图片高度 //将图片设置为四周环绕型
WdWrapType wdWrapType = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
AddPic.AddSimplePic(WordDoc, FileName, Width, Height, Anchor, wdWrapType); newTable.Cell(12, 1).Range.Text = "产品特殊属性" ;
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
} }
}

 

using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
namespace WordCreateDLL
{ public class AddTable { public static void AddSimpleTable(Application
WordApp, Document WordDoc, int numrows, int numcolumns, WdLineStyle
outStyle, WdLineStyle intStyle) { Object Nothing =
System.Reflection.Missing.Value; //文档中创建表格
Microsoft.Office.Interop.Word.Table newTable =
WordDoc.Tables.Add(WordApp.Selection.Range, numrows, numcolumns, ref
Nothing, ref Nothing); //设置表格样式 newTable.Borders.OutsideLineStyle =
outStyle; newTable.Borders.InsideLineStyle = intStyle;
newTable.Columns[1].Width = 100f; newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width = 105f; //填充表格内容 newTable.Cell(1,
1).Range.Text = "产品详细信息表"; newTable.Cell(1, 1).Range.Bold =
2;//设置单元格中字体为粗体 //合并单元格 newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
WordApp.Selection.Cells.VerticalAlignment
=WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment =
WdParagraphAlignment.wdAlignParagraphCenter;//水平居中 //填充表格内容
newTable.Cell(2, 1).Range.Text = "产品基本信息"; newTable.Cell(2,
1).Range.Font.Color =WdColor.wdColorDarkBlue;//设置单元格内字体颜色 //合并单元格
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment
=WdCellVerticalAlignment.wdCellAlignVerticalCenter; //填充表格内容
newTable.Cell(3, 1).Range.Text = "品牌名称:"; newTable.Cell(3,
2).Range.Text = "品牌名称:"; //纵向合并单元格 newTable.Cell(3, 3).Select();//选中一行
object moveUnit = WdUnits.wdLine; object moveCount = 5; object
moveExtend = WdMovementType.wdExtend; WordApp.Selection.MoveDown(ref
moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge(); //插入图片 string FileName =
@"C:\1.jpg";//图片所在路径 object Anchor =
WordDoc.Application.Selection.Range; float Width = 200f;//图片宽度 float
Height = 200f;//图片高度 //将图片设置为四周环绕型 WdWrapType wdWrapType =
Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
AddPic.AddSimplePic(WordDoc, FileName, Width, Height, Anchor,
wdWrapType); newTable.Cell(12, 1).Range.Text = "产品特殊属性";
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3)); //在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing); } }
}

 

四、插入chart

using  System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Graph;
using System.Windows.Forms;
using System.Drawing; namespace WordCreateDLL
{
public class AddChart
{
public static void AddSimpleChart(Document WordDoc, Word.Application WordApp, Object oEndOfDoc, string [,]data)
{
//插入chart
object oMissing = System.Reflection.Missing.Value;
Word.InlineShape oShape;
object oClassType = "MSGraph.Chart.8" ;
Word.Range wrdRng = WordDoc.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); Chart objChart = (Chart)oShape.OLEFormat.Object;
objChart.ChartType = XlChartType.xlColumnClustered; //绑定数据
DataSheet dataSheet;
dataSheet = objChart.Application.DataSheet;
int rownum=data.GetLength(0);
int columnnum=data.GetLength(1);
for ( int i=1;i<=rownum;i++ )
for ( int j = 1; j <= columnnum; j++)
{
dataSheet.Cells[i,j] =data[i-1,j-1]; } objChart.Application.Update();
oChartApp.GetType().InvokeMember("Update" ,
BindingFlags.InvokeMethod, null , oChartApp, null );
oChartApp.GetType().InvokeMember("Quit" ,
BindingFlags.InvokeMethod, null , oChartApp, null ); //设置大小
oShape.Width = WordApp.InchesToPoints(6.25f);
oShape.Height = WordApp.InchesToPoints(3.57f); }
}
}

 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Graph;
using System.Windows.Forms;
using System.Drawing;
namespace WordCreateDLL
{
public class AddChart
{
public static void AddSimpleChart(Document WordDoc, Word.Application WordApp, Object oEndOfDoc, string [,]data)
{
//插入chart
object oMissing = System.Reflection.Missing.Value;
Word.InlineShape oShape;
object oClassType = "MSGraph.Chart.8";
Word.Range wrdRng = WordDoc.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);
Chart objChart = (Chart)oShape.OLEFormat.Object;
objChart.ChartType = XlChartType.xlColumnClustered;
//绑定数据
DataSheet dataSheet;
dataSheet = objChart.Application.DataSheet;
int rownum=data.GetLength(0);
int columnnum=data.GetLength(1);
for(int i=1;i<=rownum;i++ )
for (int j = 1; j <= columnnum; j++)
{
dataSheet.Cells[i,j] =data[i-1,j-1]; } objChart.Application.Update();
oChartApp.GetType().InvokeMember("Update",
BindingFlags.InvokeMethod, null, oChartApp, null);
oChartApp.GetType().InvokeMember("Quit",
BindingFlags.InvokeMethod, null, oChartApp, null);
//设置大小
oShape.Width = WordApp.InchesToPoints(6.25f);
oShape.Height = WordApp.InchesToPoints(3.57f);
}
}
}

 

测试程序

 

private   void  button3_Click( object  sender, EventArgs e)
{ object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc" ; /* \endofdoc is a predefined bookmark */ //Start Word and create a new document.
Word.Application oWord;
Word.Document oDoc;
oWord = new Word.Application();
oWord.Visible = true ;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing); ////添加页眉
String HeaderText = "石化盈科" ;
// AddHeader.AddSimpleHeader(oWord, HeaderText);
WdParagraphAlignment wdAlign = WdParagraphAlignment.wdAlignParagraphCenter;
WdColor fontcolor = WdColor.wdColorBlue;
float fontsize = 10;
//AddHeader.AddSimpleHeader(oWord, HeaderText, wdAlign);
AddHeader.AddSimpleHeader(oWord, HeaderText, wdAlign,fontcolor,fontsize); //Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
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.get_Item( ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = "Heading 2" ;
oPara2.Format.SpaceAfter = 6;
oPara2.Range.InsertParagraphAfter(); //插入文字
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(); string text = "zhangruichao " ;
WdColor textcolor = fontcolor;
float textsize = 12;
AddLine.AddSimpLine(oDoc, oEndOfDoc, oRng, text, textcolor, textsize); //插入表格
WdLineStyle OutStyle = WdLineStyle.wdLineStyleThickThinLargeGap;
WdLineStyle InStyle = WdLineStyle.wdLineStyleSingle;
AddTable.AddSimpleTable(oWord, oDoc, 12, 3, OutStyle, InStyle); //插入分页
Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
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.
string [,] data= new string [4,5]; data[0,1] = "第一月" ;
data[0, 2] = "第二月" ;
data[0, 3] = "第三月" ;
data[0, 4] = "第四月" ; data[1,0] = "东部" ;
data[1,1] = "50" ;
data[1,2] = "50" ;
data[1,3] = "40" ;
data[1,4] = "50" ; data[2,0] = "西部" ;
data[2,1] = "60" ;
data[2,2] = "60" ;
data[2,3] = "70" ;
data[2,4] = "80" ; //data[3,6] = "0";
data[3,0] = "中部" ;
data[3,1] = "50" ;
data[3,2] = "50" ;
data[3,3] = "40" ;
data[3,4] = "50" ; AddChart.AddSimpleChart(oDoc, oWord, oEndOfDoc, data); wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
wrdRng.InsertParagraphAfter();
wrdRng.InsertAfter("THE END." ); //Close this form.
this .Close(); }
04-17 03:20