วิธีการทำให้ Microsoft Word เพื่อสร้างเอกสารใหม่ โดยใช้ Visual c#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 316384 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
สำหรับรุ่น Microsoft Visual Basic .NET ของบทความนี้ ดู316383.
สำหรับรุ่น Microsoft Visual Basic 6.0 ของบทความนี้ ดู313193.
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

บทความที่มีการทีละขั้นตอนนี้อธิบายวิธีการสร้างเอกสารใหม่ใน Microsoft Word โดยใช้การทำงานอัตโนมัติจาก Microsoft Visual c# 2005 หรือ Microsoft Visual c# .NET

ตัวอย่างรหัส

ตัวอย่างรหัสในบทความนี้อธิบายวิธีการดังต่อไปนี้:
  • แทรกย่อหน้า ด้วยข้อความและการจัดรูปแบบ
  • เรียกดู และแก้ไขช่วงต่าง ๆ ภายในเอกสาร
  • แทรกตาราง การจัดรูปแบบตาราง และเติมข้อมูลตารางข้อมูล
  • เพิ่มแผนภูมิ
เมื่อต้องการสร้างเอกสาร Word ใหม่ โดยใช้การทำงานอัตโนมัติจาก Visual 2005 c# หรือ.NET c# Visual ดำเนินการดังต่อไปนี้:
  1. เริ่ม Microsoft Visual Studio 2005 หรือ Microsoft Visual Studio .NET
  2. ในการแฟ้ม:เมนู คลิกใหม่แล้ว คลิกProject. ภายใต้ชนิดโครงการคลิกแสดงโครงการ c#แล้ว คลิกแอพลิเคชันของ windowsภายใต้แม่แบบ. Form1 จะถูกสร้างขึ้นตามค่าเริ่มต้น

    หมายเหตุ:ใน Visual Studio 2005 คลิกvisual c#แทนแสดงโครงการ c#.
  3. เพิ่มการอ้างอิงถึงการไลบรารีวัตถุ Microsoft Word. โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. ในการProjectเมนู คลิกเพิ่มการอ้างอิง.
    2. ในการcomแท็บ ค้นหาMicrosoft Word การไลบรารีวัตถุแล้ว คลิกเลือก.

      หมายเหตุ:ใน Visual Studio 2005 คุณไม่จำเป็นต้องคลิกเลือก.
      หมายเหตุ:Microsoft Office 2003 มีแอสเซมบลี Interop หลัก (PIAs) Microsoft Office XP ไม่สามารถรวม PIAs แต่จะสามารถดาวน์โหลดสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Office XP PIAs คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
      328912ข้อมูล: Microsoft Office XP PIAs จะพร้อมใช้งานสำหรับการดาวน์โหลด
    3. คลิกตกลงในการเพิ่มการอ้างอิงกล่องโต้ตอบเพื่อยอมรับการเลือกของคุณ ถ้าคุณได้รับการพร้อมท์เพื่อสร้าง wrappers สำหรับไลบรารีที่คุณเลือกไว้ คลิกใช่.
  4. ในการมุมมองเมนู การเลือกกล่องเครื่องมือเมื่อต้องการแสดงในกล่องเครื่องมือ และเพิ่มปุ่มไป Form1 แล้ว
  5. คลิกสองครั้งbutton1. หน้าต่างรหัสสำหรับแบบฟอร์มปรากฏขึ้น
  6. ในหน้าต่างโค้ด ให้แทนที่โค้ดต่อไปนี้
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    with::
    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. เลื่อนไปที่ด้านบนของหน้าต่างรหัส เพิ่มบรรทัดต่อไปนี้จุดสิ้นสุดของรายการการใช้directives:
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. กด F5 เพื่อสร้าง และเรียกใช้โปรแกรม
  9. คลิกbutton1เมื่อต้อง การเริ่มการทำงานอัตโนมัติของ Word และสร้างเอกสาร
หลังจากรหัสเสร็จสมบูรณ์ ตรวจสอบเอกสารที่ถูกสร้างขึ้นสำหรับคุณ เอกสารประกอบด้วยเพจทั้งสองย่อหน้าที่จัดรูปแบบ ตาราง และแผนภูมิ

ใช้แม่แบบ

ถ้าคุณกำลังใช้การทำงานอัตโนมัติเพื่อสร้างเอกสารที่เป็นทั้งหมดในรูปแบบทั่วไป คุณสามารถได้รับประโยชน์จากการเริ่มการทำงานของกระบวนการที่มีเอกสารใหม่ที่สร้างขึ้นจากเท็มเพล preformatted ใช้แม่แบบที่ มีไคลเอ็นต์การทำงานอัตโนมัติของ Word ของคุณมีข้อดีสำคัญ ๆ ที่สองผ่านสร้างเอกสารจากไม่มีสิ่งใด:
  • คุณสามารถให้การควบคุมการจัดรูปแบบและการจัดวางวัตถุมากกว่าตลอดทั้งเอกสารของคุณ
  • คุณสามารถสร้างเอกสารของคุณ ด้วยรหัสน้อยลง
โดยใช้เท็มเพล คุณสามารถปรับตำแหน่งของตาราง ย่อหน้า และวัตถุอื่น ๆ ภายในเอกสาร ตลอดจนรวมการจัดรูปแบบบนวัตถุเหล่านั้น โดยใช้การทำงานอัตโนมัติ คุณสามารถสร้างเอกสารใหม่โดยยึดตามแม่แบบของคุณด้วยรหัสเช่นต่อไปนี้:
object oTemplate = "c:\\MyTemplate.dot";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
	ref oMissing, ref oMissing);
				
ในแม่แบบของคุณ คุณสามารถกำหนดที่คั่นหน้าเว็บเพื่อให้ทำงานอัตโนมัติของไคลเอ็นต์สามารถกรอกข้อมูลลงในข้อความตัวแปรที่ตั้งที่ระบุในเอกสาร เป็นไปตาม:
object oBookMark = "MyBookmark";
oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";
				
ประโยชน์อื่นเพื่อใช้เท็มเพลคือ คุณสามารถสร้าง และเก็บการจัดรูปแบบลักษณะที่คุณต้องการใช้เมื่อรันไทม์ เป็นดังนี้:
object oStyleName = "MyStyle";
oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);
				
หรือ
object oStyleName = "MyStyle";
oWord.Selection.set_Style(ref oStyleName);
				

ข้อมูลอ้างอิง

หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
301659HOWTO: การทำให้ Microsoft Word เพื่อดำเนินการจดหมายเวียนจาก Visual .NET c#
302902HOWTO: การผูกสำหรับเซิร์ฟเวอร์ Automation Office ด้วย Visual .NET c#
สำหรับข้อมูลเพิ่มเติม แวะไปไซต์เว็บ Network (MSDN) นักพัฒนา Microsoft ต่อไปนี้:
Microsoft Office การพัฒนากับ Visual Studio
.aspx http://msdn2.microsoft.com/en-us/library/aa188489 (office.10)

word ใน Office (MSDN ความออนไลน์)
.aspx http://msdn2.microsoft.com/en-us/library/aa201330 (office.11)

Word อีกหนึ่ง (MSDN ความออนไลน์)
.aspx http://msdn2.microsoft.com/en-us/library/aa201332 (office.11)

คุณสมบัติ

หมายเลขบทความ (Article ID): 316384 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 4.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
Keywords: 
kbautomation kbhowtomaster kbmt KB316384 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:316384

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com