Aspose.Words for .NET使用表格教程之應(yīng)用格式(2)——指定表格和單元格寬度
Aspose.Words For .Net是一種高級Word文檔處理API,用于執(zhí)行各種文檔管理和操作任務(wù)。API支持生成,修改,轉(zhuǎn)換,呈現(xiàn)和打印文檔,而無需在跨平臺(tái)應(yīng)用程序中直接使用Microsoft Word。此外,API支持所有流行的Word處理文件格式,并允許將Word文檔導(dǎo)出或轉(zhuǎn)換為固定布局文件格式和最常用的圖像/多媒體格式。
【下載Aspose.Words for .NET最新試用版】
接下來我們將進(jìn)入“使用格式”的介紹,其中包括應(yīng)用格式、介紹和創(chuàng)建表、添加和拆分表以及使用列和行。
指定表格和單元格寬度
Microsoft Word文檔中的表格提供了幾種不同的方法來確定表格和單個(gè)單元格的大小。這些屬性允許對表的整體外觀和行為進(jìn)行相當(dāng)大的控制。本文將深入介紹了表的不同寬度計(jì)算屬性如何工作,并提供了可以完全控制表寬度計(jì)算方式的信息。
▲表上的不同寬度
表元素提供了幾個(gè)不同的屬性,這些屬性可以影響整個(gè)表格的寬度以及單個(gè)單元格的計(jì)算方式。
- 桌面寬度優(yōu)先
- 單個(gè)單元格上的首選寬度
- 允許自動(dòng)適應(yīng)表
- 常規(guī)單元格寬度
▲使用首選寬度
通過首選的width屬性定義表或單個(gè)單元格的所需寬度。這是一個(gè)優(yōu)選的寬度,可以在單個(gè)單元格上指定,也可以在整個(gè)表格中指定。這是元素努力適應(yīng)的大小。在某些情況下,可能無法適應(yīng)這個(gè)精確的寬度,但在大多數(shù)情況下,實(shí)際寬度將接近此值。
首選寬度屬性可以用以下幾種方式之一表示:
寬度類型 | 行為 |
Absolute | 這將元素與給定的寬度(以點(diǎn)為單位)相匹配。 |
Percent | 匹配窗口或容器大小中可用空間的相對元素。如果可用的寬度發(fā)生變化,那么該表將自動(dòng)增長或收縮以反映這些變化。 |
Auto | 這與沒有首選寬度集是一樣的。在這種情況下,元素的大小是使用屬于表的其他元素之一來計(jì)算的,而表中確實(shí)有一個(gè)大小集。 |
該表可以描述為適合頁面上100%的可用空間。在這種情況下,這意味著該表將嘗試占據(jù)左右頁邊距之間的空間。上表中的單元格可以這樣描述:
- 第一個(gè)單元格的寬度設(shè)置為40個(gè)點(diǎn)。即使調(diào)整表格大小或刪除其他單元格,此寬度也不應(yīng)發(fā)生變化。
- 第二個(gè)單元格被指定為占用表格中20%的可用空間。這意味著如果更改了表格大小,則此單元格的寬度也應(yīng)更改以反映此情況。
- 第三個(gè)單元格定義為auto或“width not defined”。這意味著使用表的其他大小信息計(jì)算單元格的寬度。通常,這樣的單元格將占用表格中的剩余空間。
在Aspose.Words中,上面描述的大小調(diào)整模式可以在PreferredWidthType枚舉下找到,并使用Table.PreferredWidth屬性和CellFormat.PreferredWidth屬性進(jìn)行設(shè)置。
通過使用PreferredWidth類的方法設(shè)置適當(dāng)?shù)氖走x寬度類型和值。例如,要從點(diǎn)指定寬度,可以使用PreferredWidth.FromPoints方法。要指定百分比寬度,請使用PreferredWidth.FromPercent。最后要指定auto或“no preferred width”,您將使用PreferredWidth.Auto。
在Aspose.Words中指定表上的首選寬度
使用Table.PreferredWidth屬性將調(diào)整其相對于容器的首選寬度(即頁面,文本列或外部表格單元格)。下面的示例顯示如何將表設(shè)置為自動(dòng)適合頁面寬度的50%:
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // 插入一個(gè)寬度占頁面寬度一半的表 Table table = builder.StartTable(); //插入一些單元格 builder.InsertCell(); table.PreferredWidth = PreferredWidth.FromPercent(50); builder.Writeln("Cell #1"); builder.InsertCell(); builder.Writeln("Cell #2"); builder.InsertCell(); builder.Writeln("Cell #3"); dataDir = dataDir + "Table.PreferredWidth_out.doc"; //將文檔保存到磁盤 doc.Save(dataDir);
指定單元格上的首選寬度
在給定單元格上使用CellFormat.PreferredWidth屬性將調(diào)整其首選寬度。下面的示例顯示了如何設(shè)置不同的首選寬度設(shè)置:
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); //插入由三個(gè)具有不同首選寬度的單元格組成的表行。 Table table = builder.StartTable(); //插入一個(gè)絕對大小的單元格。 builder.InsertCell(); builder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(40); builder.CellFormat.Shading.BackgroundPatternColor = Color.LightYellow; builder.Writeln("Cell at 40 points width"); //插入一個(gè)相對大小(百分比)的單元格。 builder.InsertCell(); builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(20); builder.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue; builder.Writeln("Cell at 20% width"); //插入一個(gè)自動(dòng)大小的單元格。 builder.InsertCell(); builder.CellFormat.PreferredWidth = PreferredWidth.Auto; builder.CellFormat.Shading.BackgroundPatternColor = Color.LightGreen; builder.Writeln("Cell automatically sized. The size of this cell is calculated from the table preferred width."); builder.Writeln("In this case the cell will fill up the rest of the available space."); dataDir = dataDir + "Table.CellPreferredWidths_out.doc"; //將文檔保存到磁盤。 doc.Save(dataDir);
查找表或單元格的首選寬度類型和值
使用PreferredWidth.Type和PreferredWidth.Value屬性來查找所需表或單元格的首選寬度詳細(xì)信息。 下面的示例演示如何檢索表格單元格的首選寬度類型:
Document doc = new Document(dataDir + "Table.SimpleTable.doc"); //檢索文檔中的第一個(gè)表。 Table table = (Table)doc.GetChild(NodeType.Table, 0, true); table.AllowAutoFit = true; Cell firstCell = table.FirstRow.FirstCell; PreferredWidthType type = firstCell.CellFormat.PreferredWidth.Type; double value = firstCell.CellFormat.PreferredWidth.Value;
允許AutoFit
該Table.AllowAutoFit屬性使表中的細(xì)胞生長和收縮,以適應(yīng)其內(nèi)容。此屬性可以與首選單元格寬度結(jié)合使用,以格式化自動(dòng)適合其內(nèi)容但也具有初始寬度的單元格。如果需要,單元寬度可以超過該寬度。下面的示例演示如何設(shè)置表以縮小或增大每個(gè)單元格以容納其內(nèi)容:
table.AllowAutoFit = true;
使用單元格寬度
在Aspose.Words中,CellFormat對象還提供了width屬性。此屬性主要保留在以前的版本中,但它仍然可用作簡化設(shè)置單元格寬度的方法。此屬性現(xiàn)在的行為會(huì)有所不同,具體取決于表中已存在的其他寬度屬性:
- 如果單元格的首選寬度為PreferredWidthType.Auto類型(沒有設(shè)置首選寬度),則會(huì)復(fù)制CellFormat.Width中的值,并成為單元格的首選寬度(以磅為單位)。
- 如果單元格的首選單元格首選寬度為PreferredWidthType.Percent,則忽略對CellFormat.Width的任何更改。
- 如果單元格已具有PreferredWidthType.Points類型的首選寬度,則忽略對CellFormat.Width的任何更改。也就是說,對width屬性的任何更改都不會(huì)以首選寬度更新,而應(yīng)該應(yīng)用于首選寬度。*如果表啟用了Table.AllowAutoFit,則忽略CellFormat.Width值的任何更改,并且單元格適合于它的內(nèi)容相反。
單元寬度計(jì)算中的優(yōu)先順序
在計(jì)算單元格寬度時(shí),Aspose.Words使用以下順序。
順序 | 屬性 | 描述 |
1 | CellFormat.PreferredWidth | 理想情況下,首選寬度用于計(jì)算單元大小。 |
2 | Table.AllowAutoFit | 如果允許自動(dòng)匹配,則表可能會(huì)超過首選寬度以容納內(nèi)容。通常它不會(huì)收縮到首選寬度以下。 |
3 | CellFormat.Width | 如果上述兩個(gè)設(shè)置均不存在,則使用CellFormat.Width下定義的寬度。 |
*想要獲取Aspose.Words正版授權(quán)可聯(lián)系在線客服哦~
ASPOSE技術(shù)交流QQ群已開通,各類資源及時(shí)分享,歡迎交流討論!(掃描下方二維碼加入群聊)