中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      使用 Aspose.Words for .NET來動態(tài)的生成word文檔

      時間:2024-07-22 20:21:51 office辦公 我要投稿
      • 相關(guān)推薦

      有關(guān)使用 Aspose.Words for .NET來動態(tài)的生成word文檔中的數(shù)據(jù)表

        1、概述

        最近項目中有一個這樣的需求:導出word文檔,要求這個文檔的格式不是固定的,用戶可以隨便的調(diào)整,導出內(nèi)容中的數(shù)據(jù)表格列是動態(tài)的,例如要求導出姓名和性別,你就要導出這兩列的數(shù)據(jù),而且這個文檔不是導出來之后再調(diào)整而是導出來后已經(jīng)是調(diào)整過了的。看到這里,您也許馬上想到用模板導出!而且.NET中自帶有這個組件:Microsoft.Office.Interop.Word,暫且可以滿足需求吧。但這個組件也是有局限性的,例如客戶端必須裝office組件,而且編碼復雜度高。最麻煩的需求是后面那個----動態(tài)的表格列頭!下面就介紹如何使用 Aspose.Words for .NET來動態(tài)的生成word文檔中的數(shù)據(jù)表格。

        2、正文

        Aspose.Words, 是Aspose“家族類庫”之一。除這個以外,還有其他許多厲害的類庫例如Aspose.pdf(操作PDF文件的類庫)、Aspose.Flash(操作 Flash文件的類庫)、Aspose.report(操作報表的類庫)等等,大家有興趣的可以上官方網(wǎng)研究下。這些類庫都包含兩種語言,一種是java ,另一種是.NET.這里主要是介紹Aspose.Words for .NET。Aspose.Words for .NET功能非常強大,您不需要安裝office組件,都可以用這個來生成word文檔。Aspose.Words支持 DOC,DOCX,OOXML,RTF格式,HTML格式,OpenDocument格式,PDF格式,和其他格式 。從下面圖中,大家可以更加詳細的了解Aspose.Words的架構(gòu)。有一點忘了提,這套類庫是收費的,在本文后面我會提供一個破解版的下載地址給大家的。

        在介紹如何動態(tài)的生成的表格之前,我們看看這個類庫是如何根據(jù)模板來生成值的:

        首先,我們來建立一個 word模板:template.doc 。在文檔中需要生成的數(shù)據(jù)地方建立一個書簽,如圖:

        在這里大家可以看到,我們主要是通過BookMark來操作,做為動態(tài)的數(shù)據(jù)的源。

        下面我們來看看具體是怎么實現(xiàn)的:

        復制代碼 代碼如下:

        string tmppath = Server.MapPath("~/template.doc");

        Document doc = new Document(tmppath); //載入模板

        if (doc.Range.Bookmarks["name"] != null)

        {

        Bookmark mark = doc.Range.Bookmarks["name"];

        mark.Text = "張三公司";

        }

        doc.Save("demo.doc", SaveFormat.Doc, SaveType.OpenInWord, Response); //保存為doc,并打開

        是不是很簡單?好了,下面我們來看看文章開頭所講的如何動態(tài)生成word表格。

        Aspose.Words對word文檔對象中的操作。在生成表格上有點類似二維數(shù)組。還記得需求說的“表格列數(shù)由用戶控制嗎”,所以我們要在模板上定義一個含有表頭的表格,這里要畫出您數(shù)據(jù)表中可以顯示的所有列頭,這樣做主要是考慮到用戶可以自己去減少不需要顯示列頭。這里要注意,書簽和列頭文字的順序不能顛倒,大家看下面代碼就知道了。如下圖:

        灰色的部分就是bookmark了。Aspose.Words生成表格的原理就如同一個二維數(shù)組,也就是一個個單元格的去生成。我們來看看代碼部分是如何實現(xiàn)的:

        復制代碼 代碼如下:

        DocumentBuilder builder = new DocumentBuilder(doc);

        DataTable products = this.GetData(); //數(shù)據(jù)源

        int count = 0;

        //記錄要顯示多少列

        for (var i = 0; i < products.Columns.Count; i++)

        {

        if (doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()] != null)

        {

        Bookmark mark = doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()];

        mark.Text = "";

        count++;

        }

        }

        System.Collections.Generic.Listlistcolumn = new System.Collections.Generic.List(count);

        for (var i = 0; i < count; i++)

        {

        builder.MoveToCell(0, 0, i, 0); //移動單元格

        if (builder.CurrentNode.NodeType == NodeType.BookmarkStart)

        {

        listcolumn.Add((builder.CurrentNode as BookmarkStart).Name);

        }

        }

        double width = builder.CellFormat.Width;//獲取單元格寬度

        builder.MoveToBookmark("table"); //開始添加值

        for (var m = 0; m < products.Rows.Count; m++)

        {

        for (var i = 0; i < listcolumn.Count; i++)

        {

        builder.InsertCell(); // 添加一個單元格

        builder.CellFormat.Borders.LineStyle = LineStyle.Single;

        builder.CellFormat.Borders.Color = System.Drawing.Color.Black;

        builder.CellFormat.Width = width;

        builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;

        builder.Write(products.Rows[m][listcolumn[i]].ToString());

        }

        builder.EndRow();

        }

        doc.Range.Bookmarks["table"].Text = ""; // 清掉標示

        doc.Save("baojiadan.doc", SaveFormat.Doc, SaveType.OpenInWord, page.Response);

        我們來看看最后生成的效果:

        到這里我們這一部分的功能就已經(jīng)全部完成了。

        也許這種方法并不是最好,如果朋友們有興趣不妨研究研究,大家一起交流下。

      【使用 Aspose.Words for .NET來動態(tài)的生成word文檔】相關(guān)文章:

      如何給word文檔加密08-02

      word文檔怎么打不開08-21

      word文檔格式排版要求11-17

      編輯Word文檔說課稿范文06-29

      word頁碼生成技巧02-20

      Word文檔內(nèi)容的選取技巧09-23

      cad圖紙轉(zhuǎn)到word文檔10-01

      word文檔頁碼怎么設(shè)置10-07

      詳解word文檔另類技巧08-24

      word文檔要怎么設(shè)置頁碼06-15

      主站蜘蛛池模板: 云霄县| 蜜桃一区二区三区自拍视频| 海盐县| 真实国产网爆门事件在线观看| 日本午夜按摩在线观看| 国产一区二区内射最近人| 卓尼县| 色琪琪一区二区三区亚洲区| 精品日本韩国一区二区三区| 精品熟女亚洲av在线观看| 91自国产精品中文字幕| 无码人妻精品中文字幕免费| 淄博市| 闸北区| 惠安县| 全州县| 老河口市| 柳州市| 屏山县| 许昌县| 高阳县| 中文亚洲成a人片在线观看| 宜都市| 枣庄市| 亚洲国产一区二区三区,| 阿拉善盟| 日本一区二区三区激情视频| av无码特黄一级| 视频精品熟女一区二区三区| 天镇县| 加勒比精品一区二区三区| 亚洲精品中文字幕无乱码麻豆| 开心五月婷婷伊人久久| 无码视频一区二区三区在线播放 | 白白色发布永久免费观看视频| 午夜日本精品一区二区| 亚洲AV秘 无码一区二区三| 亚洲AV成人综合五月天在线观看| 中文字幕一区二区人妻痴汉电车 | 成年女人在线观看毛片| 亚洲国产高清在线视频|