国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net下用Aspose.Words for .NET動態生成word文檔中的數據表格的方法

asp.net下用Aspose.Words for .NET動態生成word文檔中的數據表格的方法

2019-09-02 09:44腳本之家 ASP.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的架構。有一點忘了提,這套類庫是收費的,在本文后面我會提供一個破解版的下載地址給大家的。
asp.net下用Aspose.Words for .NET動態生成word文檔中的數據表格的方法
在介紹如何動態的生成的表格之前,我們看看這個類庫是如何根據模板來生成值的: 

首先,我們來建立一個 word模板:template.doc 。在文檔中需要生成的數據地方建立一個書簽,如圖: 
asp.net下用Aspose.Words for .NET動態生成word文檔中的數據表格的方法
在這里大家可以看到,我們主要是通過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文檔對象中的操作。在生成表格上有點類似二維數組。還記得需求說的“表格列數由用戶控制嗎”,所以我們要在模板上定義一個含有表頭的表格,這里要畫出您數據表中可以顯示的所有列頭,這樣做主要是考慮到用戶可以自己去減少不需要顯示列頭。這里要注意,書簽和列頭文字的順序不能顛倒,大家看下面代碼就知道了。如下圖: 
asp.net下用Aspose.Words for .NET動態生成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.List<string> listcolumn = new System.Collections.Generic.List<string>(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); 


我們來看看最后生成的效果: 
asp.net下用Aspose.Words for .NET動態生成word文檔中的數據表格的方法
到這里我們這一部分的功能就已經全部完成了。 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品99久久久久久动医院 | 国产一区二区免费 | 亚洲精品一区二区网址 | 九色porny丨国产精品 | 欧美成人精品一区二区男人看 | 国产成人久久精品一区二区三区 | 亚洲欧美激情精品一区二区 | 成人免费视频 | 免费三级黄色片 | 久久av网 | 欧美日韩精品一区二区三区蜜桃 | 欧美三级视频 | 99视频网站 | 国产精品久久综合 | 一区二区精品视频 | 美女视频一区二区三区 | 亚色图| 中国a一片一级一片 | 成人免费视频在线观看 | 成人激情视频在线观看 | 国产在线视频一区 | 我要看黄色一级大片 | 国产精品久久久久一区二区三区 | 中文字幕日韩一区 | 亚洲久草| h成人在线 | 久久精品小视频 | www中文在线观看 | 91精品国产一区二区三区 | 日韩一区二区三区在线 | 精品国产乱码久久久久久久软件 | 视频一区在线观看 | 免费一级毛片网站 | 7799精品视频 | 天天干天天草 | 99综合| 欧美日韩国产一级片 | 亚洲国产99 | 黄色免费视频 | 欧美激情一区二区 | 免费午夜电影 |