Aspose.Words for .NET使用表格教程之应用格式(2)——指定表格和单元格宽度
Aspose.Words For .Net是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
【下载Aspose.Words for .NET最新试用版】
接下来我们将进入“使用格式”的介绍,其中包括应用格式、介绍和创建表、添加和拆分表以及使用列和行。
指定表格和单元格宽度
Microsoft Word文档中的表格提供了几种不同的方法来确定表格和单个单元格的大小。这些属性允许对表的整体外观和行为进行相当大的控制。本文将深入介绍了表的不同宽度计算属性如何工作,并提供了可以完全控制表宽度计算方式的信息。
▲表上的不同宽度
表元素提供了几个不同的属性,这些属性可以影响整个表格的宽度以及单个单元格的计算方式。
- 桌面宽度优先
- 单个单元格上的首选宽度
- 允许自动适应表
- 常规单元格宽度
▲使用首选宽度
通过首选的width属性定义表或单个单元格的所需宽度。这是一个优选的宽度,可以在单个单元格上指定,也可以在整个表格中指定。这是元素努力适应的大小。在某些情况下,可能无法适应这个精确的宽度,但在大多数情况下,实际宽度将接近此值。
首选宽度属性可以用以下几种方式之一表示:
宽度类型 | 行为 |
Absolute | 这将元素与给定的宽度(以点为单位)相匹配。 |
Percent | 匹配窗口或容器大小中可用空间的相对元素。如果可用的宽度发生变化,那么该表将自动增长或收缩以反映这些变化。 |
Auto | 这与没有首选宽度集是一样的。在这种情况下,元素的大小是使用属于表的其他元素之一来计算的,而表中确实有一个大小集。 |
该表可以描述为适合页面上100%的可用空间。在这种情况下,这意味着该表将尝试占据左右页边距之间的空间。上表中的单元格可以这样描述:
- 第一个单元格的宽度设置为40个点。即使调整表格大小或删除其他单元格,此宽度也不应发生变化。
- 第二个单元格被指定为占用表格中20%的可用空间。这意味着如果更改了表格大小,则此单元格的宽度也应更改以反映此情况。
- 第三个单元格定义为auto或“width not defined”。这意味着使用表的其他大小信息计算单元格的宽度。通常,这样的单元格将占用表格中的剩余空间。
在Aspose.Words中,上面描述的大小调整模式可以在PreferredWidthType枚举下找到,并使用Table.PreferredWidth属性和CellFormat.PreferredWidth属性进行设置。
通过使用PreferredWidth类的方法设置适当的首选宽度类型和值。例如,要从点指定宽度,可以使用PreferredWidth.FromPoints方法。要指定百分比宽度,请使用PreferredWidth.FromPercent。最后要指定auto或“no preferred width”,您将使用PreferredWidth.Auto。
在Aspose.Words中指定表上的首选宽度
使用Table.PreferredWidth属性将调整其相对于容器的首选宽度(即页面,文本列或外部表格单元格)。下面的示例显示如何将表设置为自动适合页面宽度的50%:
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // 插入一个宽度占页面宽度一半的表 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属性将调整其首选宽度。下面的示例显示了如何设置不同的首选宽度设置:
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); //插入由三个具有不同首选宽度的单元格组成的表行。 Table table = builder.StartTable(); //插入一个绝对大小的单元格。 builder.InsertCell(); builder.CellFormat.PreferredWidth = PreferredWidth.FromPoints(40); builder.CellFormat.Shading.BackgroundPatternColor = Color.LightYellow; builder.Writeln("Cell at 40 points width"); //插入一个相对大小(百分比)的单元格。 builder.InsertCell(); builder.CellFormat.PreferredWidth = PreferredWidth.FromPercent(20); builder.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue; builder.Writeln("Cell at 20% width"); //插入一个自动大小的单元格。 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属性来查找所需表或单元格的首选宽度详细信息。 下面的示例演示如何检索表格单元格的首选宽度类型:
Document doc = new Document(dataDir + "Table.SimpleTable.doc"); //检索文档中的第一个表。 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属性使表中的细胞生长和收缩,以适应其内容。此属性可以与首选单元格宽度结合使用,以格式化自动适合其内容但也具有初始宽度的单元格。如果需要,单元宽度可以超过该宽度。下面的示例演示如何设置表以缩小或增大每个单元格以容纳其内容:
table.AllowAutoFit = true;
使用单元格宽度
在Aspose.Words中,CellFormat对象还提供了width属性。此属性主要保留在以前的版本中,但它仍然可用作简化设置单元格宽度的方法。此属性现在的行为会有所不同,具体取决于表中已存在的其他宽度属性:
- 如果单元格的首选宽度为PreferredWidthType.Auto类型(没有设置首选宽度),则会复制CellFormat.Width中的值,并成为单元格的首选宽度(以磅为单位)。
- 如果单元格的首选单元格首选宽度为PreferredWidthType.Percent,则忽略对CellFormat.Width的任何更改。
- 如果单元格已具有PreferredWidthType.Points类型的首选宽度,则忽略对CellFormat.Width的任何更改。也就是说,对width属性的任何更改都不会以首选宽度更新,而应该应用于首选宽度。*如果表启用了Table.AllowAutoFit,则忽略CellFormat.Width值的任何更改,并且单元格适合于它的内容相反。
单元宽度计算中的优先顺序
在计算单元格宽度时,Aspose.Words使用以下顺序。
顺序 | 属性 | 描述 |
1 | CellFormat.PreferredWidth | 理想情况下,首选宽度用于计算单元大小。 |
2 | Table.AllowAutoFit | 如果允许自动匹配,则表可能会超过首选宽度以容纳内容。通常它不会收缩到首选宽度以下。 |
3 | CellFormat.Width | 如果上述两个设置均不存在,则使用CellFormat.Width下定义的宽度。 |
*想要获取Aspose.Words正版授权可联系哦~
ASPOSE技术交流QQ群已开通,各类资源及时分享,欢迎交流讨论!(扫描下方二维码加入群聊)