Un ejemplo más completo de un documento de Word de operación C #

Este artículo presenta principalmente un ejemplo de documento de palabras de operación C # relativamente completo. Este artículo resume mi propia experiencia en proyectos. Este artículo también da un ejemplo. Este ejemplo incluye algunas imágenes, textos, tablas, fórmulas de edición y composición tipográficas de uso común. Además de la operación de configuración de página, encabezado y número de página, los amigos que lo necesitan pueden consultar

En los últimos dos días, he estudiado cómo usar VS2008 (lenguaje C #) para generar documentos de Word. Aquí hay algunos resúmenes:

1. Muy simple.

2. Requisitos de desarrollo y entorno operativo. El sistema operativo es: Windows XP (instalación de .net framework2.0) / Vista / Win7; la versión completamente instalada de Word2003 debe estar instalada en el sistema operativo. Debe enfatizarse aquí que Word2003 es una versión completamente instalada, porque el desarrollo y la operación del software requieren un componente com: Microsoft word 11.0 Object Library. Si no es la versión completamente instalada de Word2003, puede descargar este componente com e instalarlo manualmente. La dirección de descarga es: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20923 , el archivo no es grande, solo unos 4M.

3. Configuración del proyecto C #. La configuración de ingeniería aquí es agregar el componente com. Los pasos son: "Agregar referencia" -> pestaña "com" en el Explorador de proyectos-> seleccione Microsoft Word 11.0 Biblioteca de objetos en la lista desplegable. Ok, parece que es lo mismo que agregar un dll general, pero en realidad vs2008 completa una serie de operaciones complejas sobre componentes de llamadas de .net durante este proceso, pero afortunadamente no tenemos que preocuparnos por esto.

4. El siguiente paso es escribir el código. Aquí, el objeto com que usa Word es muy suave como el objeto normal no com. Parece que no importa lo que com no es com en absoluto. Para que el código sea más conciso, puede agregar esta declaración en la parte superior del archivo de código fuente: usando Word = Microsoft.Office.Interop.Word;

5. Es mejor tener una cierta comprensión del modelo de imagen de la palabra, para que al escribir código, no sea tan "confuso". Hay varios objetos más importantes en el modelo de objetos usados: Aplicación, Documento, Selección, Rango, Marcador y otros objetos, como: Párrafo, Sección, Nivel de tabla. Cuando comencé a aprender, sentí que Selección, Rango y Marcador eran un poco confusos. La selección puede ser fácil de entender. Significa el área de selección actual. Si no hay selección, significa la posición del cursor. Range y Bookmark son realmente similares en muchos lugares, pero hay algunas diferencias. No diré mucho aquí, solo google "word.Range".

6. En el proceso de escribir código, a menudo quiero implementar algunas operaciones, pero no sé cómo implementarlo con código porque no estoy familiarizado con la palabra objeto. Por ejemplo, configurar encabezados, agregar números de página y similares, si la operación manual en el programa de Word es, por supuesto, muy simple, pero usar el código para lograrlo, puede no ser tan fácil para los principiantes. En este caso, generalmente hay dos métodos para elegir: uno es el "método Baidu / google", el otro es también el que recomiendo es usar la función "macro de registro" de Word para lograr Después de registrar la operación como una macro, observe el código en la macro. El código en la macro es casi el código que desea (solo la sintaxis es ligeramente diferente).

7. A continuación se proporciona un ejemplo. Este ejemplo incluye algunos gráficos, texto, tablas, edición y diseño de fórmulas comunes, así como configuraciones de página, encabezados y operaciones de número de página. Hay comentarios en él, que están escritos muy claramente.

utilizando el sistema; 
usando System.Collections.Generic; 
utilizando System.ComponentModel; 
usando System.Data; 
usando System.Drawing; 
usando System.Text; 
usando Microsoft.Office.Interop; 
usando Word = Microsoft.Office.Interop.Word; 
usando System.Runtime.InteropServices; 

espacio de nombres WindowsFormsApplication1 
{ 
  clase parcial pública Form1: System.Windows.Forms. Form 
  { 

    [DllImport ("shell32.dll")] 
    public static extern int ShellExecute (IntPtr hwnd, String lpszOp, String lpszFile, String lpszParams, String lpszDir, int FsShowCmd); 
    Public Form1 () 
    { 
      InitializeComponent (); 
    }

    private void button1_Click (objeto remitente, EventArgs e) 
    { 
      // Nuevo documento 
      // Word.Application newapp = new Word.Application (); // También puede usar esta oración para inicializar 
      Word.Application newapp = new Word.ApplicationClass (); 
      Word .Document newdoc; 
      object nothing = System.Reflection.Missing.Value; // Se utiliza como el parámetro predeterminado de la función 
      newdoc = newapp.Documents.Add (ref nothing, ref nothing, ref nothing, ref nothing); // Genera una palabra Documento 
      newapp.Visible = true; // Si se muestra la interfaz del programa de palabras 

      /// Configuración de página 
      //newdoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape; 
      //newdoc.PageSetup.PageWidth = newapp.CentimetersToPoints (21.0f);  
      // newdoc.PageSetup.PageHeight = newapp.CentimeterToPoints (29.7f);
      newdoc. PageSetup.PaperSize = Word.WdPaperSize.wdPaperA4; 
      newdoc.PageSetup.Orientation = Word.WdOrientation.wdOrientPortrait; 
      newdoc.PageSetup.TopMargin = 57.0f; 
      newdoc.PageSetup.BottomMargin = 57.0f; 
      newdoc.PageSetup.LeftMargin = 57.0f ; 
      newdoc.PageSetup.RightMargin = 57.0f; 
      newdoc.PageSetup.HeaderDistance = 30.0f; // posición del encabezado 

      // establecer encabezado 
      newapp.ActiveWindow.View.Type = Word.WdViewType.wdOutlineView; // Ver estilo. 
      newapp.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekPrimaryHeader; // Ingrese la configuración del encabezado, donde el margen del encabezado se ha completado en la configuración de la página 
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; 
      // Insertar página Imágenes de cejas
      string headerfile = "d: \\ header.jpg";  
      this.outpicture (archivo de encabezado, Properties.Resources.header);
      Word.InlineShape shape1 = newapp.ActiveWindow.ActivePane.Selection.InlineShapes.AddPicture (archivo de encabezado, ref. Nada, ref. Nada, ref. Nada); 
      shape1.Height = 30; 
      shape1.Width = 80; 
      newapp.ActiveWindow.ActivePane.Selection.InsertAfter ("中 建 东北 院"); 
      // 去掉 页眉 的 那条 横线
      newapp.ActiveWindow.ActivePane.Selection.ParagraphFormat.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .LineStyle = Word.WdLineStyle.wdLineStyleNone; 
      newapp.ActiveWindow.ActivePane.Selection.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .Visible = false; 
      newapp.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument; // 退出 页眉 设置

      // 添加 页码
      objeto primero = verdadero;
      Word.PageNumbers pns = newapp.Selection.Sections [1] .Headers [Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages] .PageNumbers; 
      pns.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleNumberInDash; 
      pns.HeadingLevelForChapter = 0; 
      pns.IncludeChapterNumber = false; 
      pns.ChapterPageSeparator = Word.WdSeparatorType.wdSeparatorHyphen; 
      pns.RestartNumberingAtSection = false; 
      pns.StartingNumber = 0; 
      object pagenmbetal = Word.WdPageNumberAlignment.wdAlignPageNumberCenter; 
      newapp.Selection.Sections [1] .Footers [Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages] .PageNumbers.Add (ref pagenmbetal, ref first);

      // Configuración de texto (Selección significa el conjunto de selección actual, si no hay ningún objeto seleccionado actualmente, significa establecer la posición del cursor) 
      newapp.Selection.Font.Size = 14; 
      newapp.Selection.Font.Bold = 0; 
      newapp.Selection .Font.Color = Word.WdColor.wdColorBlack; 
      newapp.Selection.Font.Name = "宋体"; 

      // Configuración de párrafo 
      newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceExactly; 
      newapp.Selection.PpagraphFormat. ; 
      objeto de oEndOfDoc = "\\ endofdoc"; 
      Word.Range rang1 = newdoc.Bookmarks.get_Item ref oEndOfDoc) .Range; 
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraph.
      newapp.Selection.ParagraphFormat.FirstLineIndent = 30; 
      newdoc.Content.InsertAfter (WindowsFormsApplication1.Properties.Resources.PreViewWords); 
      
      

      // 插入 公式
      objeto fieldType = Word.WdFieldType.wdFieldEmpty; 
      fórmula del objeto = @ "eq \ i (a, b, ξxdx)"; 
      objeto presrveFormatting = falso; 
      rang1.Text = formula.ToString (); 
      rang1.Font.Size = 14; 
      rang1.Font.Bold = 0; 
      rang1.Font.Subscript = 0; 
      rang1.Font.Color = Word.WdColor.wdColorBlue; 
      rang1.Font.Name = "宋体"; 
      rang1.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle; 
      rang1.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; 
      newdoc .Fields.Add (rang1, ref fieldType, ref formula, ref presrveFormatting); 

      // Reemplace las primeras tres palabras del documento con "asdfasdf" y establezca su color en azul 
      object start = 0; 
      object end = 3; 
      Word.Range rang2 = newdoc.Range (inicio de referencia, final de referencia);
      rang2.Font.Color = Word.WdColor.wdColorBlue; 
      rang2.Text = "como signo"; 

      // Reemplazar "como" al comienzo del documento con "Yuan Bo" 
      rang1.Start = 0; 
      rang1.End = 2; 
      rang1. Text = "This is a"; 
      rang1.InsertAfter ("Book"); 
      //rang1.Select (); 
      object codirection = Word.WdCollapseDirection.wdCollapseStart; 
      rang1.Collapse (ref codirection); // El inicio y el final de rang1 Ambos se establecen al principio o al final de 
      newapp .Selection.EndKey (ref unite, ref nothing); // Mueva el cursor al final del 
      artículo newapp.Selection.Font.Tamaño = 10;
 
      /// Negrita los primeros tres caracteres
      newdoc.Range (ref start, ref end) .Bold = 1; 
      object rang = rang2; 
      newdoc.Bookmarks.Add ("yb", ref rang); 
      
      
      object unite = Word.WdUnits.wdStory; 
      newapp.Selection.TypeText (" ............................... (Ecuación 1) \ n "); 


      // Insertar imagen 
      newapp.Selection.EndKey ( ref unir, nada ref); // cursor de texto al final 
      //newapp.Selection.HomeKey(ref Unite, ref nada); // mover el cursor al principio del texto 
      newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle; 
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      objeto LinkToFile = falso; 
      objeto SaveWithDocument = verdadero;
      objeto Anchor = newapp.Selection.Range; 
      string picname = "d: \\ kk.jpg"; 
      this.outpicture (picname, Properties.Resources.IMG_2169); 
      newdoc.InlineShapes.AddPicture (picname, ref LinkToFile, ref SaveWithDocument, ref Anchor); 
      newdoc.InlineShapes [1] .Height = 200; 
      newdoc.InlineShapes [1] .Width = 200; 
      newdoc.Content.InsertAfter ("\ n"); 
      newapp.Selection.EndKey (ref unite, ref nothing); // 将 光标 移至 文 末
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      newapp.Selection.Font.Size = 10; 
      newapp.Selection.TypeText ("图 1 袁 冶 \ n"); 
      newapp.Selection.ParagraphFormat. Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; 
      newdoc.Content.InsertAfter ("\ n"); 
      newdoc.Content.InsertAfter ("\ n"); 

      // La fórmula también se puede insertar de esta manera, y este método es más simple 
      newapp .Selection.Font.Size = 14; 
      newapp.Selection.InsertFormula (fórmula de referencia, ref. Nada); 
      newapp.Selection.Font.Size = 10; 
      newapp.Selection.TypeText ("........... ................... (Fórmula 2) \ n ");
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      newapp.Selection.TypeText ("Table 1 Electronics \ n"); 

      // Insertar tabla 
      Word.Table table1 = newdoc.Tables.Add (newapp.Selection.Range , 4, 3, ref. Nada, ref. Nada); 
      newdoc.Tables [1] .Cell (1, 1) .Range.Text = "Product \  
      nProyecto newdoc.Tables [1] .Cell (1, 2) .Range.Text = "Computadora ";
      nProject "; newdoc.Tables [1] .Cell (1, 3) .Range.Text = "Mobile"; 
      newdoc.Tables [1] .Cell (2, 1) .Range.Text = "Weight (kg)"; 
      newdoc.Tables [1] .Cell (3, 1) .Range. Texto = "Precio (yuan)"; 
      newdoc.Tables [1] .Cell (4, 1) .Range.Text = "Información común"; 
      newdoc.Tables [1] .Cell (4, 2) .Range.Text = "Información A"; 
      newdoc.Tables [1] .Cell (4,3) .Range.Text = "Información B";
      

      table1.Select ();
      table1.Rows.Alignment = Word.WdRowAlignment.wdAlignRowCenter; // 整个 表格 居中
      newapp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; 
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      newapp.Selection.Cells.HeightRule = Word.WdRowHeightRule.wdRowHeightExactly; 
      newapp.Selection.Cells.Height = 40; 
      table1.Rows [2] .Height = 20;
      table1.Rows [3] .Height = 20; 
      table1.Rows [4] .Height = 20; 
      table1.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; 
      newapp.Selection.Cells.Width = 150; 
      tabla1.Columnas [1]. Ancho = 75;
      table1.Cell (1, 1) .Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight; 
      table1.Cell (1, 1) .Range.Paragraphs [2] .Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; 

      
      

      // 表 头 斜线
      table1.Cell (1, 1) .Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown] .Visible = true; 
      table1.Cell (1, 1) .Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown] .Color = Word.WdColor.wdColorGreen; 
      table1.Cell (1, 1) .Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown] .LineWidth = Word.WdLineWidth.wdLineWidth050pt; 

      // 表格 边框
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderHorizontal] .Visible = true;
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderHorizontal] .Color = Word.WdColor.wdColorGreen; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderHorizontal] .LineWidth = Word.WdLineWidth.wdLineWidth050pt; 

      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderVertical] .Visible = true; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderVertical] .Color = Word.WdColor.wdColorGreen; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderVertical] .LineWidth = Word.WdLineWidth.wdLineWidth050pt;

      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft] .Visible = true; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight] .Color = Word.WdColor.wdColorGreen;
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft] .Color = Word.WdColor.wdColorGreen; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft] .LineWidth = Word.WdLineWidth.wdLineWidth050pt; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft] .LineStyle = Word.WdLineStyle.wdLineStyleDoubleWavy; 

      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight] .Visible = true; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight] .LineWidth = Word.WdLineWidth.wdLineWidth050pt; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight] .LineStyle = Word.WdLineStyle.wdLineStyleDoubleWavy;

      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .Visible = true; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .Color = Word.WdColor.wdColorGreen; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .LineWidth = Word.WdLineWidth.wdLineWidth050pt; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom] .LineStyle = Word.WdLineStyle.wdLineStyleDouble; 

      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop] .Visible = true;
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop] .Color = Word.WdColor.wdColorGreen; 
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop] .LineWidth = Word.WdLineWidth.wdLineWidth050pt;
      table1.Borders [Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop] .LineStyle = Word.WdLineStyle.wdLineStyleDouble; 

      // 合并 单元 格
      newdoc.Tables [1] .Cell (4, 2) .Merge (table1.Cell (4, 3)); 

      // 删除 图片
      this.delpictfile (encabezado); 
      this.delpictfile (picname); 


      // 保存 文档
      object name = "c: \\ yb3.doc"; 
      newdoc.SaveAs (nombre de referencia, nada de referencia, nada de referencia, nada de 
             referencia, nada de referencia, nada de referencia, nada de referencia, 
             nada de referencia, nada de referencia, nada de referencia, nada de referencia, nada de referencia, nada de referencia, nada de referencia, nada de referencia, referencia nada);  
      objeto saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
      
      // 关闭 文档
      newdoc.Close (nada de referencia, nada de referencia, nada de referencia); 
      newapp.Application.Quit (ref saveOption, ref nothing, ref nothing); 
      newdoc = nulo; 
      newapp = nulo; 
      ShellExecute (IntPtr.Zero, "abierto", "c: \\ yb3.doc", "", "", 3); 
    } imagen 

    privada vacía (string filename, System.Drawing.Bitmap bmap) 
    { 
      bmap.Save (filename); 
    } 

    privado delpictfile (string filename) 
    { 
      System.IO.File.Delete (filename); 
    } 
   
  } 

} 
引用 于https://m.jb51.net/article/67314.htm

Supongo que te gusta

Origin www.cnblogs.com/tonychenhan/p/12755106.html
Recomendado
Clasificación