Automazione di creare un nuovo documento utilizzando C#

Traduzione articoli Traduzione articoli
Identificativo articolo: 316384 - Visualizza i prodotti a cui si riferisce l?articolo.
Per la una versione di Microsoft Visual Basic .NET di questo articolo, vedere 316383.
Per la una versione di Microsoft Visual Basic 6.0 di questo articolo, vedere 313193.
Espandi tutto | Chiudi tutto

Sommario

In questo articolo viene descritto come creare un nuovo documento in Microsoft Word utilizzando l'automazione di Microsoft Visual C# 2005 o Microsoft Visual C#. NET.

Codice di esempio

Il codice di esempio in questo articolo viene illustrato come eseguire le operazioni seguenti:
  • Inserire testo e la formattazione di paragrafi.
  • Individuare e modificare vari intervalli all'interno di un documento.
  • Inserire tabelle, formattare le tabelle e popolare le tabelle con dati.
  • Aggiungere un grafico.
Per creare un nuovo documento di Word utilizzando l'automazione da Visual C# 2005 o Visual C#. NET, attenersi alla seguente procedura:
  1. Avviare Microsoft Visual Studio 2005 o Microsoft Visual Studio NET..
  2. Dal menu file , fare clic su Nuovo , quindi progetto . In Tipi progetto fare clic su Progetti di C# e quindi fare clic su Applicazione Windows in modelli . In base all'impostazione predefinita, viene creato il progetto Form1.

    Nota Nella finestra di Visual Studio 2005, fare clic su Visual C# invece di Progetti di Visual C# .
  3. Aggiungere un riferimento alla Libreria di oggetti di Microsoft Word . Per effettuare questa operazione, attenersi alla seguente procedura:
    1. Scegliere Aggiungi riferimento dal menu progetto .
    2. Nella scheda COM , individuare la Libreria oggetti di Microsoft Word e quindi fare clic su Seleziona .

      Nota In Visual Studio 2005, è necessario fare clic su Seleziona .
      Nota Microsoft Office 2003 include assembly di interoperabilità primario (in inglese). Non sono invece inclusi in Microsoft Office XP, ma possono essere scaricati. Per ulteriori informazioni sull'assembly di interoperabilità primari di Office XP, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
      328912INFORMAZIONI: Assembly PIA di Microsoft Office XP È disponibili per il download
    3. Fare clic su OK nella finestra di dialogo Aggiungi riferimento per accettare le selezioni. Se chiesto di generare wrapper per le librerie selezionate, fare clic su .
  4. Dal menu Visualizza , selezionare la casella degli strumenti per visualizzare la casella e quindi aggiungere un pulsante a Form1.
  5. Fare doppio clic su Button1 . Viene visualizzata la finestra del codice per il form.
  6. Nella finestra del codice sostituire il seguente codice
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    con:
    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. Scorrere verso l'alto la pagina del codice. Aggiungere la seguente riga alla fine dell'elenco di direttive using :
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. Premere F5 per compilare ed eseguire il programma.
  9. Fare clic su Button1 per avviare l'automazione di Word e creare il documento.
Una volta completato il codice, esaminare il documento è stato creato. Il documento contiene due pagine di un grafico, tabelle e paragrafi formattati.

Utilizzare un modello

Se si utilizza automazione per creare i documenti in un formato comune, possono beneficiare di avviare il processo con un nuovo documento è basato su un modello preformattata. Utilizzo di un modello con il client di automazione di Word presenta due vantaggi significativi rispetto creazione di un documento dal nulla:
  • Puoi avere maggiore controllo sulla formattazione e selezione host di oggetti all'interno dei documenti.
  • È possibile creare i documenti con meno codice.
Utilizzando un modello, è possibile ottimizzare il selezione host di tabelle, paragrafi e altri oggetti all'interno del documento, nonché includere la formattazione a tali oggetti. Utilizzando l'automazione, è possibile creare un nuovo documento che a seconda del modello con codice such as quanto segue:
object oTemplate = "c:\\MyTemplate.dot";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
	ref oMissing, ref oMissing);
				
nel modello, è possibile definire il segnalibri in modo che l'automazione di client possibile inserire testo variabile in una posizione specifica nel documento, come segue:
object oBookMark = "MyBookmark";
oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";
				
un altro vantaggio di utilizzare un modello è che possibilità di creare e memorizzare gli stili di formattazione che si desidera applicare in fase di esecuzione, come illustrato di seguito:
object oStyleName = "MyStyle";
oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);
				
- o -
object oStyleName = "MyStyle";
oWord.Selection.set_Style(ref oStyleName);
				

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
301659HOWTO: Automatizzare Microsoft Word per eseguire la stampa unione da Visual C# .NET
302902HOWTO: Associazione per server di automazione di Office con Visual C# .NET
Per ulteriori informazioni, visitare il seguente sito Web Microsoft Developer Network (MSDN):
Sviluppo di Microsoft Office con Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Word in Office (MSDN articolo in linea)
http://msdn2.microsoft.com/en-us/library/aa201330(office.11).aspx

Word più una (MSDN articolo in linea)
http://msdn2.microsoft.com/en-us/library/aa201332(office.11).aspx

Proprietà

Identificativo articolo: 316384 - Ultima modifica: giovedì 17 maggio 2007 - Revisione: 7.7
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Chiavi: 
kbmt kbautomation kbhowtomaster KB316384 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 316384
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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