1. 一个控制台例子,实现动态生成Word。
首先,添加引用:COM->Microsoft Word 11.0 Object Library。
using System.Collections.Generic; |
using Microsoft.Office.Interop.Word; |
static void Main( string [] args) |
string message = CreateWordFile(); |
Console.WriteLine(message); |
public static string CreateWordFile() |
Object Nothing = System.Reflection.Missing.Value; |
string name = DateTime.Now.ToString( "yyyyMMddhhmmss" ) + ".doc" ; |
object filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, name); //文件保存路径 |
Application WordApp = new ApplicationClass(); |
Document WordDoc = WordApp.Documents.Add( ref Nothing, ref Nothing, ref Nothing, ref Nothing); |
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView; |
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader; |
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter( "[页眉内容]" ); |
WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight; //设置右对齐 |
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; //跳出页眉设置 |
WordApp.Selection.ParagraphFormat.LineSpacing = 15f; //设置文档的行间距 |
object WdLine = WdUnits.wdLine; //换一行; |
WordApp.Selection.MoveDown( ref WdLine, ref count, ref Nothing); //移动焦点 |
WordApp.Selection.TypeParagraph(); //插入段落 |
Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing); |
newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleThickThinLargeGap; |
newTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle; |
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 = "HTC" ; |
newTable.Cell(3, 3).Select(); //选中一行 |
object moveUnit = WdUnits.wdLine; |
object moveExtend = WdMovementType.wdExtend; |
WordApp.Selection.MoveDown( ref moveUnit, ref moveCount, ref moveExtend); |
WordApp.Selection.Cells.Merge(); |
string FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.gif" ); //图片所在路径 |
object LinkToFile = false ; |
object SaveWithDocument = true ; |
object Anchor = WordDoc.Application.Selection.Range; |
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor); |
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f; //图片宽度 |
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f; //图片高度 |
Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape(); |
s.WrapFormat.Type = WdWrapType.wdWrapSquare; |
newTable.Cell(12, 1).Range.Text = "产品特殊属性" ; |
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3)); |
WordDoc.Content.Tables[1].Rows.Add( ref Nothing); |
WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString(); //“落款” |
WordDoc.Paragraphs.Last.Alignment = WdParagraphAlignment.wdAlignParagraphRight; |
WordDoc.SaveAs( ref filename, 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, ref Nothing); |
WordDoc.Close( ref Nothing, ref Nothing, ref Nothing); |
WordApp.Quit( ref Nothing, ref Nothing, ref Nothing); |
message = name + "文档生成成功!" ; |
2. 操作Word对象汇总
创建新Word
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
打开文档:
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
object fileName = @"E:\CCCXCXX\TestDoc.doc" ; |
oDoc = oWord.Documents.Open( ref fileName, |
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, |
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, |
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); |
导入模板
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
object fileName = @"E:\XXXCCX\Test.doc" ; |
oDoc = oWord.Documents.Add( ref fileName, ref oMissing, |
ref oMissing, ref oMissing); |
添加新表
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
Word.Range tableLocation = oDoc.Range( ref start, ref end); |
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); |
表插入行
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
Word.Range tableLocation = oDoc.Range( ref start, ref end); |
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); |
Word.Table newTable = oDoc.Tables[1]; |
object beforeRow = newTable.Rows[1]; |
newTable.Rows.Add( ref beforeRow); |
单元格合并
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
Word.Range tableLocation = oDoc.Range( ref start, ref end); |
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); |
Word.Table newTable = oDoc.Tables[1]; |
object beforeRow = newTable.Rows[1]; |
newTable.Rows.Add( ref beforeRow); |
Word.Cell cell = newTable.Cell(1, 1); |
cell.Merge(newTable.Cell(1, 2)); |
单元格分离
object oMissing = System.Reflection.Missing.Value; |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
Word.Range tableLocation = oDoc.Range( ref start, ref end); |
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); |
Word.Table newTable = oDoc.Tables[1]; |
object beforeRow = newTable.Rows[1]; |
newTable.Rows.Add( ref beforeRow); |
Word.Cell cell = newTable.Cell(1, 1); |
cell.Merge(newTable.Cell(1, 2)); |
cell.Split( ref Rownum, ref Columnnum); |
通过段落控制插入
object oMissing = System.Reflection.Missing.Value; |
object oEndOfDoc = "\\endofdoc" ; |
//Start Word and create a new document. |
oWord = new Word.Application(); |
oDoc = oWord.Documents.Add( ref oMissing, ref oMissing, |
ref oMissing, ref oMissing); |
//Insert a paragraph at the beginning of the document. |
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();
转自:
http://www.soaspx.com/dotnet/csharp/csharp_20110707_7822.html