Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để tự động hoá Microsoft Word để tạo một tài liệu mới bằng cách sử dụng Visual C#

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:316384
Đối với một Microsoft Visual Basic.NET Phiên bản này viết, xem 316383.
Đối với một phiên bản Microsoft Visual Basic 6.0 này viết, xem 313193.
TÓM TẮT
Bài viết từng bước này mô tả cách tạo ra một mới tài liệu trong Microsoft Word bằng cách sử dụng tự động hóa từ Microsoft Visual C# 2005 hoặc Microsoft Visual C#.NET.

Mẫu mã

Mẫu mã trong bài viết này chứng tỏ làm thế nào để làm việc sau:
  • Chèn đoạn văn với văn bản và định dạng.
  • Duyệt và sửa đổi các phạm vi khác nhau trong vòng một tài liệu.
  • Chèn bảng, định dạng bảng và cư các bảng với dữ liệu.
  • Thêm một biểu đồ.
Để tạo một tài liệu Word mới bằng cách sử dụng tự động hóa từ trực quan C# 2005 hoặc Visual C#.NET, hãy làm theo các bước sau:
  1. Bắt đầu Microsoft Visual Studio 2005 hoặc Microsoft Visual Phòng thu.NET.
  2. Trên các Tệp trình đơn, nhấp vào Mới, sau đó bấm Dự án. Dưới Các loại dự án, bấm Visual C# các dự án, sau đó bấm Ứng dụng Windows dưới Khuôn mẫu. Form1 được tạo ra theo mặc định.

    Chú ý Trong Visual Studio 2005, nhấp vào Visual C# Thay vào đó của Visual C# các dự án.
  3. Thêm một tham chiếu đến Microsoft Word đối tượng thư viện. Để thực hiện việc này, hãy làm theo những bước sau:
    1. Trên các Dự án trình đơn, nhấp vào Thêm tài liệu tham khảo.
    2. Trên các COM tab, xác định vị trí Microsoft Word Đối tượng thư viện, sau đó bấm Chọn.

      Chú ý Trong Visual Studio 2005, bạn không cần phải nhấp vào Chọn.
      Chú ý Microsoft Office 2003 bao gồm chính Interop hội đồng (PIAs). Microsoft Office XP không bao gồm PIAs, nhưng họ có thể được tải về. Để biết thêm chi tiết về Office XP PIAs, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
      328912Thông tin: Microsoft Office XP PIAs có sẵn để tải về
    3. Nhấp vào Ok trong các Thêm tài liệu tham khảo hộp thoại để chấp nhận của bạn lựa chọn. Nếu bạn được nhắc tạo ra hàm bao cho các thư viện mà bạn đã chọn, bấm vào Có.
  4. Trên các Xem trình đơn, chọn Hộp công cụ hiển thị hộp công cụ, và sau đó thêm một nút để Form1.
  5. Bấm đúp Button1. Cửa sổ mã cho các hình thức xuất hiện.
  6. Trong cửa sổ mã, thay thế mã sau
    private void button1_Click(object sender, System.EventArgs e){}					
    với:
    private void button1_Click(object sender, System.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);	//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();	//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();}					
  7. Di chuyển trên cùng của cửa sổ mã. Thêm dưới đây dòng cuối cùng của danh sách bằng cách sử dụng chỉ thị:
    using Word = Microsoft.Office.Interop.Word;using System.Reflection;					
  8. Nhấn F5 để xây dựng và chạy chương trình.
  9. Nhấp vào Button1 để bắt đầu từ tự động hóa và tạo ra các tài liệu.
Sau khi mã hoàn thành, kiểm tra các tài liệu đã được tạo ra Tặng em. Tài liệu chứa hai trang định dạng đoạn, bảng, và một bảng xếp hạng.

Sử dụng một mẫu

Nếu bạn đang sử dụng tự động hóa để xây dựng tài liệu mà là tất cả trong một định dạng phổ biến, bạn có thể hưởng lợi từ bắt đầu quá trình với một tài liệu mới đó dựa trên một mẫu preformatted. Sử dụng một mẫu với lời của bạn Khách hàng tự động hóa có hai lợi thế đáng kể trong việc xây dựng một tài liệu từ không có gì:
  • Bạn có thể có kiểm soát lớn hơn các định dạng và vị trí của các đối tượng trong tài liệu của bạn.
  • Bạn có thể xây dựng tài liệu của bạn với mã ít hơn.
Bằng cách sử dụng một mẫu, bạn có thể tinh chỉnh vị trí của bảng, đoạn văn, và các đối tượng trong tài liệu, cũng như bao gồm định dạng trên các đối tượng. Bằng cách sử dụng tự động hóa, bạn có thể tạo một tài liệu mới dựa trên mẫu của bạn với mã như sau:
object oTemplate = "c:\\MyTemplate.dot";oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,	ref oMissing, ref oMissing);				
Trong mẫu của bạn, bạn có thể xác định trang đánh dấu để tự động hóa của bạn khách hàng có thể điền vào văn bản biến tại một địa điểm cụ thể trong tài liệu, như sau:
object oBookMark = "MyBookmark";oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";				
Một lợi thế để sử dụng một mẫu là bạn có thể tạo và cất giữ định dạng phong cách mà bạn muốn áp dụng tại thời gian chạy, như sau:
object oStyleName = "MyStyle";oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);				
- hay -
object oStyleName = "MyStyle";oWord.Selection.set_Style(ref oStyleName);				
THAM KHẢO
Để biết thêm chi tiết, nhấp vào số bài viết sau đây để xem các bài viết trong cơ sở kiến thức Microsoft:
301659HOWTO: Tự động hoá Microsoft Word thực hiện Mail Merge từ Visual C#.NET
302902 HOWTO: Ràng buộc cho văn phòng tự động hóa các máy chủ với Visual C#.NET
Để biết thêm chi tiết, hãy truy cập Microsoft sau đây Các trang Web của nhà phát triển mạng (MSDN):
Văn phòng Microsoft phát triển với Visual Studio
http://msdn2.Microsoft.com/en-US/Library/aa188489 (office.10) .aspx

Từ trong văn phòng (MSDN bài báo trực tuyến)
http://msdn2.Microsoft.com/en-US/Library/aa201330 (office.11) .aspx

Một bộ từ (MSDN bài báo trực tuyến)
http://msdn2.Microsoft.com/en-US/Library/aa201332 (office.11) .aspx
wd2003 wd2002

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 316384 - Xem lại Lần cuối: 08/27/2011 18:38:00 - Bản sửa đổi: 2.0

Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Word 2002 Standard Edition

  • kbautomation kbhowtomaster kbmt KB316384 KbMtvi
Phản hồi