一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

c# 操作Word總結(jié)

 腳踏實(shí)地飛翔者 2016-01-29

   在醫(yī)療管理系統(tǒng)中為保存患者的體檢和治療記錄,方便以后的醫(yī)生或其他人查看。當(dāng)把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中,需要新建很多的字段,而且操作很繁瑣,于是想到網(wǎng)頁(yè)的信息創(chuàng)建到一個(gè)word文本中,在顯示的時(shí),可以在線打開word,也可以把word轉(zhuǎn)換成html標(biāo)簽顯示。 這樣使用word代替網(wǎng)頁(yè)的原因有:
  第一:網(wǎng)頁(yè)生成數(shù)學(xué)公式和特殊符號(hào)存儲(chǔ)和顯示比較麻煩(如何操作word生成數(shù)學(xué)公式,有待測(cè)試)
  第二:生成Word版的報(bào)告更容易存檔和沒有環(huán)境下的傳閱及打印
  第三:客戶直接操作Word感覺更親切,而且非常熟悉
  Msdn上的word操作api(不過只有英文版,英文差的先閃過)
Word2007的API:http://msdn.microsoft.com/en-us/library/bb257531(v=office.12).aspx
Word2010的API:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word(v=office.14).aspx

  Word對(duì)象模型 (.Net Perspective)
  五大對(duì)象
Application :代表Microsoft Word應(yīng)用程序本身
  是Document和Selection的基類。通過Application的屬性和方法,我們可以控制Word的大環(huán)境。
Document :代表一個(gè)Word文檔
  當(dāng)你新建一個(gè)Word文檔或者打開一個(gè)已有的Word文檔,你將創(chuàng)建一個(gè)Document對(duì)象,該對(duì)象被加入到Words Documents Collection中。擁有焦點(diǎn)的Document稱為ActiveDocument,可以通過Application對(duì)象的ActiveDocument屬性獲得當(dāng)前文檔對(duì)象
Selection :代表當(dāng)前選中的區(qū)域(高亮),沒有選中區(qū)域時(shí)代表光標(biāo)點(diǎn)
  它通常是高亮顯示的(例如,你要改變一段文字的字體,你首先得選中這段文字,那么選中的這塊區(qū)域就是當(dāng)前文檔的Selection對(duì)象所包含的區(qū)域)
Bookmarks :書簽
  1>書簽一般有名字
  2>Saved with the document,且文檔關(guān)閉了之后書簽繼續(xù)存在
  3>書簽通常是隱藏的,但也可以通過代碼設(shè)置其為可見

Range :代表一塊區(qū)域,與Selection類似,不過一般不可見
  1>包含一個(gè)起始位置和一個(gè)結(jié)束位置
  2>它可以包含光標(biāo)點(diǎn),一段文本或者整個(gè)文檔
  3>它包含空格,tab以及paragraph marks
  4>它可以是當(dāng)前選中的區(qū)域,當(dāng)然也可以不是當(dāng)前選中區(qū)域
  5>它被動(dòng)態(tài)創(chuàng)建
  6>當(dāng)你在一個(gè)Range的末尾插入文本,這將擴(kuò)展該Range


  word文檔對(duì)象的結(jié)構(gòu)圖


關(guān)于對(duì)象的詳細(xì)使用,可以參考msdn api

實(shí)例使用  

創(chuàng)建Word 文檔所使用的主要方法是通過微軟公司提供的Microsoft Word X Object Library,
其中X 為版本號(hào)。Word2010對(duì)應(yīng)14.0, Word 2007 對(duì)應(yīng)12.0,Word 2003 對(duì)應(yīng)11.0。
通過在項(xiàng)目中添加該組件,即可使用微軟公司提供的方法創(chuàng)建相應(yīng)版本的Word 文檔。
在實(shí)例中我將所要生成word的格式設(shè)置為2003版本

新建一個(gè)winForm項(xiàng)目文件,
Com組件中添加 Microsoft Word 12.0 Object Library,引用面板中多出Microsoft.Office.Core、Microsoft.Office.Interop.Word兩個(gè)引用。
在類文件中添加應(yīng)用如下:
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;

  下面從word創(chuàng)建、格式設(shè)置、文本添加、圖片添加、表格添加展示部分代碼:

創(chuàng)建Word文檔

 

設(shè)置Word文檔格式

效果圖:

添加文本

效果圖:

添加圖片

效果圖:

復(fù)制代碼
private void AddWordTable()
        {
            object path;//文件路徑
            string strContent;//文件內(nèi)容
            MSWord.Application wordApp;//Word應(yīng)用程序變量
            MSWord.Document wordDoc;//Word文檔變量
            path = "d:\\myWord.doc";//保存為Word2003文檔
            // path = "d:\\myWord.doc";//保存為Word2007文檔
            wordApp = new MSWord.ApplicationClass();//初始化
            if (File.Exists((string)path))
            {
                File.Delete((string)path);
            }
            Object Nothing = Missing.Value;
            wordDoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

            int tableRow = 6;
            int tableColumn = 6;
            //定義一個(gè)word中的表格對(duì)象
            MSWord.Table table = wordDoc.Tables.Add(wordApp.Selection.Range, tableRow, tableColumn, ref Nothing, ref Nothing);


            wordDoc.Tables[1].Cell(1, 1).Range.Text = "列\(zhòng)n行"; 
            for (int i = 1; i < tableRow; i++)
            {
                for (int j = 1; j < tableColumn; j++)
                {
                    if (i == 1)
                    {
                        table.Cell(i, j+1).Range.Text = "Column " + j;
                    }
                    if (j == 1)
                    {
                        table.Cell(i+1, j).Range.Text = "Row " + i;
                    }
                    table.Cell(i+1, j+1).Range.Text =  i + "" + j + "";
                }
            }


            //添加行
            table.Rows.Add(ref Nothing);
            table.Rows[tableRow + 1].Height = 45;
            //向新添加的行的單元格中添加圖片
            string FileName = "d:\\kk.jpg";//圖片所在路徑
            object LinkToFile = false;
            object SaveWithDocument = true;
            object Anchor = table.Cell(tableRow+1, tableColumn).Range;//選中要添加圖片的單元格
            wordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
         
            wordDoc.Application.ActiveDocument.InlineShapes[1].Width = 75;//圖片寬度
            wordDoc.Application.ActiveDocument.InlineShapes[1].Height = 45;//圖片高度
            // 將圖片設(shè)置為四周環(huán)繞型
            MSWord.Shape s = wordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
            s.WrapFormat.Type = MSWord.WdWrapType.wdWrapSquare;


            //設(shè)置table樣式
            table.Rows.HeightRule = MSWord.WdRowHeightRule.wdRowHeightAtLeast;
            table.Rows.Height = wordApp.CentimetersToPoints(float.Parse("0.8"));

            table.Range.Font.Size = 10.5F;
            table.Range.Font.Bold = 0;

            table.Range.ParagraphFormat.Alignment = MSWord.WdParagraphAlignment.wdAlignParagraphCenter;
            table.Range.Cells.VerticalAlignment = MSWord.WdCellVerticalAlignment.wdCellAlignVerticalBottom;
            //設(shè)置table邊框樣式
            table.Borders.OutsideLineStyle = MSWord.WdLineStyle.wdLineStyleDouble;
            table.Borders.InsideLineStyle = MSWord.WdLineStyle.wdLineStyleSingle;

            table.Rows[1].Range.Font.Bold = 1;
            table.Rows[1].Range.Font.Size = 12F;
            table.Cell(1, 1).Range.Font.Size = 10.5F;
            wordApp.Selection.Cells.Height = 40;//所有單元格的高度
            for (int i = 2; i <= tableRow; i++)
            {
                table.Rows[i].Height = 20;
            }
            table.Cell(1, 1).Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
            table.Cell(1, 1).Range.Paragraphs[2].Format.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
            
            table.Columns[1].Width = 50;
            for (int i = 2; i <=tableColumn; i++)
            {
                table.Columns[i].Width = 75;
            }


            //添加表頭斜線,并設(shè)置表頭的樣式
            table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].Visible = true;
            table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].Color = Microsoft.Office.Interop.Word.WdColor.wdColorGray60;
            table.Cell(1, 1).Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderDiagonalDown].LineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt;

            //表格邊框
            //表格內(nèi)容行邊框
            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderHorizontal, Microsoft.Office.Interop.Word.WdColor.wdColorGray20, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth025pt);
            //表格內(nèi)容列邊框
            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderVertical, Microsoft.Office.Interop.Word.WdColor.wdColorGray20, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth025pt);

            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft, Microsoft.Office.Interop.Word.WdColor.wdColorGray50, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt);

            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight, Microsoft.Office.Interop.Word.WdColor.wdColorGray50, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt);

            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop, Microsoft.Office.Interop.Word.WdColor.wdColorGray50, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt);

            SetTableBorderStyle(table, Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom, Microsoft.Office.Interop.Word.WdColor.wdColorGray50, Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth050pt);
            //合并單元格
            table.Cell(4, 4).Merge(table.Cell(4, 5));//橫向合并

            table.Cell(2, 3).Merge(table.Cell(4, 3));//縱向合并


            object format = MSWord.WdSaveFormat.wdFormatDocument;
            wordDoc.SaveAs(ref path, ref format, 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);
            wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
            wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
            Response.Write("<script>alert('" + path + ": Word文檔創(chuàng)建表格完畢!');</script>");
        }
復(fù)制代碼

附:SetTableBorderStyle函數(shù)內(nèi)容

View Code

 

效果圖:

書簽使用:

使用步驟:1:建立word模板,并且在word中插入要用到的書簽

     2:c#方法中新建word操作類,并且打開硬盤中建立好的word模板

     3:找到word模板中的書簽,并在書簽處寫入要插入的數(shù)據(jù)

 

word書簽使用

 

 

附: c# 將word文檔顯示在網(wǎng)頁(yè)上的方式:

Word轉(zhuǎn)換Html

轉(zhuǎn)換思路:

  >取得Word文檔的本地路徑

  >將Word文檔轉(zhuǎn)換為html文件

  >將html保存到項(xiàng)目中

  >在當(dāng)前項(xiàng)目中打開此html文件

局限:

  目前只在IE10測(cè)試中可以很好使用,在firefox和chrome測(cè)試用均有中文亂碼的問題,有待解決。

 

 引用:

http://blog.csdn.net/ruby97/article/details/7406806

http://wenku.baidu.com/link?url=osPLfzoQc1Tl0mi7MAT5srs7KUmPZ3WLf3Pjs_I9Ahu87UNbJceGsogT5ONBsI87DnndqJX7HI6-mRcWehoGcF2P-gLKkvCtiH5KA3UI13S

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    午夜精品一区二区av| 国产精品日韩欧美第一页| 日韩高清一区二区三区四区| 婷婷开心五月亚洲综合| 91后入中出内射在线| 91亚洲国产成人久久| 欧美午夜性刺激在线观看| 日韩人妻少妇一区二区| 国产精品99一区二区三区| 麻豆剧果冻传媒一二三区| 国产毛片对白精品看片| 亚洲二区欧美一区二区| 日本中文字幕在线精品| 日本国产欧美精品视频| 99少妇偷拍视频在线| 国产一区二区熟女精品免费| 国产一区欧美一区日本道| 欧美人禽色视频免费看| 亚洲av在线视频一区| 欧美中文日韩一区久久| 久久午夜福利精品日韩| 人妻少妇久久中文字幕久久| 久久精品国产第一区二区三区| 欧美偷拍一区二区三区四区| 亚洲丁香婷婷久久一区| 日本午夜免费福利视频| 冬爱琴音一区二区中文字幕| 成人三级视频在线观看不卡| 亚洲综合一区二区三区在线| 东京热一二三区在线免| 国产精品不卡高清在线观看| 欧美丰满大屁股一区二区三区| 日韩欧美在线看一卡一卡| 国产一级精品色特级色国产| 1024你懂的在线视频| 亚洲国产av精品一区二区| 日韩欧美一区二区亚洲| 国产传媒精品视频一区| 国产不卡在线免费观看视频| 国产精品欧美在线观看| 国产一级内片内射免费看|