欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

比較全的一個C#操作word文檔示例

 更新時間:2015年06月05日 10:41:33   投稿:junjie  
這篇文章主要介紹了比較全的一個C#操作word文檔示例,本文來自己項目心得總結(jié),本文還給出了一個示例,這個示例里面包括了一些常用的圖、文、表、公式的編輯與排版以及頁面設(shè)置、頁眉、頁碼的操作,需要的朋友可以參考下

最近兩天研究了一下如何使用VS2008(C#語言)輸出Word文檔。以下是幾點總結(jié):

1、非常簡單。

2、開發(fā)及運行環(huán)境要求。操作系統(tǒng)為:WindowsXP(安裝.net framework2.0)/Vista/Win7;在操作系統(tǒng)必須安裝Word2003完全安裝版。這里必須要強調(diào)是Word2003完全安裝版,因為軟件開發(fā)及運行都需要一個com組件:Microsoft word 11.0 Object Library。如果不是Word2003完全安裝版,可以下載這個com組件,并手動的安裝這個com組件。下載地址為:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20923,文件不大,只有4M左右。

3、C#工程設(shè)置。這里的工程設(shè)置,就是添加com組件。步驟為:在工程資源管理器中"添加引用"->"com"選項卡->在下拉列表中選Microsoft word 11.0 Object Library。ok了,看上去,跟添加一般的dll一樣,但實際上vs2008在這個過程中完成一系列復雜的關(guān)于.net調(diào)用com組件的操作,不過,幸好我們不用管這個。

4、接下就是寫代碼了。在這里,使用Word的com對像,跟使用一般的非com對像一樣,非常流暢,好像根本就不管它什么com不com的。為了使代碼比較簡潔,可以在源代碼文件頂添加這樣的一條語句:using Word = Microsoft.Office.Interop.Word;

5、最好是對word對像模型有一定的了解,這樣在寫代碼的時候就不會那么“迷茫”了。wore對像模型中有幾個比較重要的對像,它們是Application、Document、Selection、Range、Bookmark,以及其它的一些對像,如:Paragraph、Section、Table等級。剛開始學的時候,感覺Selection、Range、Bookmark這幾個對像有點迷惑人,Selection可能好理解,就是表示當前的選擇區(qū)域,如果沒有選擇就表示光標所在位置。Range和Bookmark,其實在很多地方很像,不過也有一些區(qū)別,在這里就不多說了,google一下"word.Range"就行了。

6、在寫代碼的過程中,經(jīng)常會想要實現(xiàn)的一些操作,但是由于對word對像不熟悉而不知怎么用代碼實現(xiàn)。比如設(shè)置頁眉、添加頁碼什么的,如果在Word程序里手動的操作當然很簡單,但是要用代碼來實現(xiàn),對初學者來說就可能不那么容易了。遇到這種情況,一般有兩種方法可以選擇:一種是"百度/google法",別一種,也是我所推薦的一種就是,利用Word的“錄制宏”功能把想要實現(xiàn)的操作錄成宏之后,再看宏里的代碼,宏里的代碼其實幾乎就是你想要的代碼了(只不過語法有一點不一樣而已)。

7、以下給出一個示例,這個示例里面包括了一些常用的圖、文、表、公式的編輯與排版以及頁面設(shè)置、頁眉、頁碼的操作,里面都有注釋,寫得很清楚。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using Microsoft.Office.Interop;
using Word = Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices; 

namespace WindowsFormsApplication1
{
  public partial class 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(object sender, EventArgs e)
    {
      //新建文檔
      // Word.Application newapp = new Word.Application();//用這句也能初始化
      Word.Application newapp = new Word.ApplicationClass();
      Word.Document newdoc;
      object nothing=System.Reflection.Missing.Value;//用于作為函數(shù)的默認參數(shù)
      newdoc = newapp.Documents.Add(ref nothing, ref nothing, ref nothing, ref nothing);//生成一個word文檔
      newapp.Visible = true ;//是否顯示word程序界面

      //頁面設(shè)置
      //newdoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape ;
      //newdoc.PageSetup.PageWidth = newapp.CentimetersToPoints(21.0f);
      //newdoc.PageSetup.PageHeight = newapp.CentimetersToPoints(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;//頁眉位置

      //設(shè)置頁眉
      newapp.ActiveWindow.View.Type = Word.WdViewType.wdOutlineView;//視圖樣式。
      newapp.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekPrimaryHeader;//進入頁眉設(shè)置,其中頁眉邊距在頁面設(shè)置中已完成
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
      //插入頁眉圖片
      string headerfile = "d:\\header.jpg";
      this.outpicture(headerfile, Properties.Resources.header);
      Word.InlineShape shape1= newapp.ActiveWindow.ActivePane.Selection.InlineShapes.AddPicture(headerfile, ref nothing, ref nothing, ref nothing);
      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;//退出頁眉設(shè)置

      //添加頁碼
      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;
      object first=true; 
      newapp.Selection.Sections[1].Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages ].PageNumbers.Add(ref pagenmbetal, ref first);

      //文字設(shè)置(Selection表示當前選擇集,如果當前沒有選擇對像,則指對光標所在處進行設(shè)置)
      newapp.Selection.Font.Size = 14;
      newapp.Selection.Font.Bold = 0;
      newapp.Selection.Font.Color = Word.WdColor.wdColorBlack;
      newapp.Selection.Font.Name = "宋體";

      //段落設(shè)置
      newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceExactly;
      newapp.Selection.ParagraphFormat.LineSpacing = 20;
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
      newapp.Selection.ParagraphFormat.FirstLineIndent = 30;
      newdoc.Content.InsertAfter( WindowsFormsApplication1.Properties.Resources.PreViewWords);
      
      

      //插入公式
      object oEndOfDoc="\\endofdoc";
      Word.Range rang1 = newdoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
      object fieldType = Word.WdFieldType.wdFieldEmpty;
      object formula = @"eq \i(a,b,ξxdx)";
      object presrveFormatting = false;
      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);

      //將文檔的前三個字替換成"asdfasdf",并將其顏色設(shè)為藍色
      object start=0;
      object end=3;
      Word.Range rang2 = newdoc.Range(ref start, ref end);
      rang2.Font.Color = Word.WdColor.wdColorBlue;
      rang2.Text = "as簽";

      //將文檔開頭的"as"替換成"袁波"
      rang1.Start = 0;
      rang1.End = 2;
      rang1.Text = "這是一個";
      rang1.InsertAfter("書");
      //rang1.Select();
      object codirection = Word.WdCollapseDirection.wdCollapseStart;
      rang1.Collapse(ref codirection);//將rang1的起點和終點都定于起點或終點

      //對前三個字符進行加粗
      newdoc.Range(ref start, ref end).Bold = 1;
      object rang = rang2;
      newdoc.Bookmarks.Add("yb",ref rang);
      
      
      object unite = Word.WdUnits.wdStory;
      newapp.Selection.EndKey(ref unite, ref nothing);//將光標移至文末
      newapp.Selection.Font.Size = 10;
      newapp.Selection.TypeText("...............................(式1)\n");


      //插入圖片
      newapp.Selection.EndKey(ref unite, ref nothing);//將光標移至文末
      //newapp.Selection.HomeKey(ref unite, ref nothing);//將光標移至文開頭
      newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
      object LinkToFile = false;
      object SaveWithDocument = true;
      object 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");

      //用這種方式也可以插入公式,并且這種方法更簡單
      newapp.Selection.Font.Size = 14;
      newapp.Selection.InsertFormula(ref formula, ref nothing);
      newapp.Selection.Font.Size = 10;
      newapp.Selection.TypeText("..............................(式2)\n");
      newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
      newapp.Selection.TypeText("表1 電子產(chǎn)品\n");

      //插入表格
      Word.Table table1 = newdoc.Tables.Add(newapp.Selection.Range, 4, 3, ref nothing, ref nothing);
      newdoc.Tables[1].Cell(1, 1).Range.Text = "產(chǎn)品\n項目";
      newdoc.Tables[1].Cell(1, 2).Range.Text = "電腦";
      newdoc.Tables[1].Cell(1, 3).Range.Text = "手機";
      newdoc.Tables[1].Cell(2, 1).Range.Text = "重量(kg)";
      newdoc.Tables[1].Cell(3, 1).Range.Text = "價格(元)";
      newdoc.Tables[1].Cell(4, 1).Range.Text = "共同信息";
      newdoc.Tables[1].Cell(4, 2).Range.Text = "信息A";
      newdoc.Tables[1].Cell(4,3).Range.Text = "信息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;
      table1.Columns[1].Width = 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.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].Color = Word.WdColor.wdColorGreen;
      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(headerfile);
      this.delpictfile(picname);


      //保存文檔
      object name = "c:\\yb3.doc";
      newdoc.SaveAs(ref name, 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);
      
      //關(guān)閉文檔
      object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
      newdoc.Close(ref nothing , ref nothing, ref nothing);
      newapp.Application.Quit(ref saveOption, ref nothing, ref nothing);
      newdoc = null;
      newapp = null;
      ShellExecute(IntPtr.Zero, "open", "c:\\yb3.doc", "", "", 3);
    }

    private void outpicture(string filename,System.Drawing.Bitmap bmap)
    {
      bmap.Save(filename);
    }

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

}

相關(guān)文章

  • 運用示例簡單講解C#取消令牌CancellationTokenSource

    運用示例簡單講解C#取消令牌CancellationTokenSource

    這篇文章運用示例簡單講解C#取消令牌CancellationTokenSource,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C#泛型委托的用法實例分析

    C#泛型委托的用法實例分析

    這篇文章主要介紹了C#泛型委托的用法,以實例形式較為詳細的分析了C#委托的功能與相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)的封裝CURD到SqlHelper類用法簡單分析

    C#實現(xiàn)的封裝CURD到SqlHelper類用法簡單分析

    這篇文章主要介紹了C#實現(xiàn)的封裝CURD到SqlHelper類用法,涉及數(shù)據(jù)庫相關(guān)配置方法及SqlHelper類的簡單使用技巧,代碼中包含了較為詳盡的注釋便于理解,需要的朋友可以參考下
    2017-11-11
  • C# 圖片與二進制轉(zhuǎn)換的簡單實例

    C# 圖片與二進制轉(zhuǎn)換的簡單實例

    這篇文章介紹了C# 圖片與二進制轉(zhuǎn)換的簡單實例,有需要的朋友可以參考一下
    2013-09-09
  • c# wpf如何附加依賴項屬性

    c# wpf如何附加依賴項屬性

    這篇文章主要介紹了c# wpf如何附加依賴項屬性,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • c#隱藏基類方法的作用

    c#隱藏基類方法的作用

    這篇文章主要介紹了c#隱藏基類方法的作用,大家可以參考使用
    2013-12-12
  • 基于C#的圖表控件庫 ScottPlot編譯visual studio 2022

    基于C#的圖表控件庫 ScottPlot編譯visual studio 2022

    基于 C# 的 圖表控件庫 ScottPlot,開源免費,可以用于開發(fā)一些上位機軟件,如電壓、電流波形的顯示,開發(fā)【示波器】圖形界面,可以顯示一些圖表、波形,總之功能比較的強大,本文介紹了基于C#的圖表控件庫 ScottPlot編譯visual studio 2022,需要的朋友可以參考下
    2022-06-06
  • C#微信公眾號開發(fā)之自定義菜單

    C#微信公眾號開發(fā)之自定義菜單

    這篇文章介紹了C#微信公眾號開發(fā)之自定義菜單,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#通過指針讀取文件的方法

    C#通過指針讀取文件的方法

    這篇文章主要介紹了C#通過指針讀取文件的方法,涉及C#針對文件的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#利用VS中插件打包并發(fā)布winfrom程序

    C#利用VS中插件打包并發(fā)布winfrom程序

    這篇文章主要為大家詳細介紹了C#利用VS中插件打包并發(fā)布winfrom程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評論