<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 使用 Aspose.Words for .NET來動態的生成word文檔

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

    有關使用 Aspose.Words for .NET來動態的生成word文檔中的數據表

      1、概述

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

      2、正文

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

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

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

      在這里大家可以看到,我們主要是通過BookMark來操作,做為動態的數據的源。

      下面我們來看看具體是怎么實現的:

      復制代碼 代碼如下:

      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,并打開

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

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

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

      復制代碼 代碼如下:

      DocumentBuilder builder = new DocumentBuilder(doc);

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

      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);

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

      到這里我們這一部分的功能就已經全部完成了。

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

    【使用 Aspose.Words for .NET來動態的生成word文檔】相關文章:

    如何給word文檔加密08-02

    word文檔怎么打不開08-21

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

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

    word頁碼生成技巧02-20

    Word文檔內容的選取技巧09-23

    cad圖紙轉到word文檔10-01

    word文檔頁碼怎么設置10-07

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

    word文檔要怎么設置頁碼06-15

    主站蜘蛛池模板: 国产一精品一AV一免费| 一本久久a久久精品综合夜夜| 999在线视频精品免费播放观看 | 一区二区三区日韩精品| 亚洲av日韩av天堂影片精品| 99久久国产主播综合精品| 久久国产精品成人片免费| 久久久国产精品| 四虎精品免费永久在线| 日韩精品久久久久久免费| 精品国产欧美一区二区三区成人| 国产成人精品免费视| 人妻精品久久久久中文字幕| 香蕉国产精品频视| 精品一区二区三区无码免费视频| 久久96国产精品久久久| 精品国产三级a在线观看| 亚洲AV永久无码精品一区二区| 亚洲一二成人精品区| 久久水蜜桃亚洲av无码精品麻豆| 精品国产污污免费网站入口在线| 91老司机深夜福利精品视频在线观看| 精品国产91久久久久久久a| 国产高清在线精品二区一| 亚洲精品网站在线观看不卡无广告 | 国产农村妇女毛片精品久久| 久久久久人妻一区精品色| 久久青青草原精品国产不卡| 成人精品一区二区久久| 国产精品青草久久久久婷婷 | 亚洲精品国产首次亮相| 久久久久久国产精品免费免费| 87国产私拍福利精品视频| 国产成人精品手机在线观看| 亚洲精品国产字幕久久不卡| 香蕉99久久国产综合精品宅男自| 国产三级精品三级在专区| www亚洲欲色成人久久精品| 久久精品一区二区国产| 91精品全国免费观看青青| 国产精品一区二区久久不卡|