提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2019-10-09 11:33:50.370|阅读 1680 次
概述:在一个表中,几个单元格可以合并到一个单元格中。当某些行需要标题或跨表宽度的大块文本时,此功能很有用。这只能通过将表中的某些单元格合并为一个单元格来实现。当使用所有输入格式(包括导入HTML内容)时,Aspose.Words支持合并的单元格。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
推荐阅读:【Aspose.Words for .NET使用表格教程之应用格式——将格式应用于表,行和单元格】
Aspose.Words For .Net是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
接下来我们将进入“使用格式”的介绍,其中包括应用格式、介绍和创建表、添加和拆分表以及使用列和行。本文将为大家讲解如何在表格中运用自动调整设置。
>>Aspose.Words for .NET更新至最新版v19.10,欢迎下载体验
致改变世界的程序员——现在购买Aspose系列产品最高可享10000元高额减免!更多活动详情可哦~
在一个表中,几个单元格可以合并到一个单元格中。当某些行需要标题或跨表宽度的大块文本时,此功能很有用。这只能通过将表中的某些单元格合并为一个单元格来实现。当使用所有输入格式(包括导入HTML内容)时,Aspose.Words支持合并的单元格。
在Aspose.Words中,合并的单元格由CellFormat.HorizontalMerge和CellFormat.VerticalMerge表示。所述CellFormat.HorizontalMerge属性描述如果所述细胞是细胞的水平合并的一部分。同样,CellFormat.VerticalMerge属性描述单元格是否是单元格垂直合并的一部分。这些属性的值定义了单元格的合并行为。
要检查某个单元格是否为合并单元格序列的一部分,我们只需检查CellFormat.HorizontalMerge和CellFormat.VerticalMerge属性。 下面的示例显示单元格的水平和垂直合并类型。您可以从此处下载该示例的模板文件。
Document doc = new Document(dataDir + "Table.MergedCells.doc"); // Retrieve the first table in the document. Table table = (Table)doc.GetChild(NodeType.Table, 0, true); foreach (Row row in table.Rows) { foreach (Cell cell in row.Cells) { Console.WriteLine(PrintCellMergeType(cell)); } }
使用相同的技术来设置表中单元格的合并行为。使用DocumentBuilder构建具有合并单元格的表时,需要为每个单元格设置适当的合并类型。另外,您必须记住清除合并设置,否则表中的所有单元格将被合并。可以通过将适当的合并属性的值设置为CellMerge.None来完成。 下面的示例创建一个具有两行的表,其中第一行的单元格水平合并。
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.First; builder.Write("Text in merged cells."); builder.InsertCell(); // This cell is merged to the previous and should be empty. builder.CellFormat.HorizontalMerge = CellMerge.Previous; builder.EndRow(); builder.InsertCell(); builder.CellFormat.HorizontalMerge = CellMerge.None; builder.Write("Text in one cell."); builder.InsertCell(); builder.Write("Text in another cell."); builder.EndRow(); builder.EndTable(); dataDir = dataDir + "Table.HorizontalMerge_out.doc"; // Save the document to disk. doc.Save(dataDir);
下面的示例创建一个具有两列的表格,第一列中的单元格垂直合并。
Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.InsertCell(); builder.CellFormat.VerticalMerge = CellMerge.First; builder.Write("Text in merged cells."); builder.InsertCell(); builder.CellFormat.VerticalMerge = CellMerge.None; builder.Write("Text in one cell"); builder.EndRow(); builder.InsertCell(); // This cell is vertically merged to the cell above and should be empty. builder.CellFormat.VerticalMerge = CellMerge.Previous; builder.InsertCell(); builder.CellFormat.VerticalMerge = CellMerge.None; builder.Write("Text in another cell"); builder.EndRow(); builder.EndTable(); dataDir = dataDir + "Table.VerticalMerge_out.doc"; // Save the document to disk. doc.Save(dataDir);
在不使用构建器的其他情况下(例如在现有表中),以这种方式合并单元可能不是那么简单。 取而代之的是,我们可以将将合并属性应用于单元格所涉及的基本操作包装到一种使任务轻松得多的方法中。 此方法类似于自动合并方法,该方法被称为合并表中的一系列单元格。 下面的代码将合并表中从给定单元格到结束单元格的单元格范围。 此范围可以跨越许多行或列。 一种合并表中所有单元格在指定单元格范围内的方法。
internal static void MergeCells(Cell startCell, Cell endCell) { Table parentTable = startCell.ParentRow.ParentTable; // Find the row and cell indices for the start and end cell. Point startCellPos = new Point(startCell.ParentRow.IndexOf(startCell), parentTable.IndexOf(startCell.ParentRow)); Point endCellPos = new Point(endCell.ParentRow.IndexOf(endCell), parentTable.IndexOf(endCell.ParentRow)); // Create the range of cells to be merged based off these indices. Inverse each index if the end cell if before the start cell. Rectangle mergeRange = new Rectangle( System.Math.Min(startCellPos.X, endCellPos.X), System.Math.Min(startCellPos.Y, endCellPos.Y), System.Math.Abs(endCellPos.X - startCellPos.X) + 1, System.Math.Abs(endCellPos.Y - startCellPos.Y) + 1); foreach (Row row in parentTable.Rows) { foreach (Cell cell in row.Cells) { Point currentPos = new Point(row.IndexOf(cell), parentTable.IndexOf(row)); // Check if the current cell is inside our merge range then merge it. if (mergeRange.Contains(currentPos)) { if (currentPos.X == mergeRange.X) cell.CellFormat.HorizontalMerge = CellMerge.First; else cell.CellFormat.HorizontalMerge = CellMerge.Previous; if (currentPos.Y == mergeRange.Y) cell.CellFormat.VerticalMerge = CellMerge.First; else cell.CellFormat.VerticalMerge = CellMerge.Previous; } } } }
下面的示例合并两个指定单元格之间的单元格范围。
// Open the document Document doc = new Document(dataDir + "Table.Document.doc"); // Retrieve the first table in the body of the first section. Table table = doc.FirstSection.Body.Tables[0]; // We want to merge the range of cells found inbetween these two cells. Cell cellStartRange = table.Rows[2].Cells[2]; Cell cellEndRange = table.Rows[3].Cells[3]; // Merge all the cells between the two specified cells into one. MergeCells(cellStartRange, cellEndRange); dataDir = dataDir + "Table.MergeCellRange_out.doc"; // Save the document. doc.Save(dataDir);
ASPOSE技术交流QQ群(642018183)已开通,各类资源及时分享,欢迎交流讨论!
扫描关注“慧聚IT”微信公众号,及时获取更多产品最新动态及最新资讯
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文将演示如何使用DevExpress WPF Grid控件实现列和带的固定,欢迎下载最新版组件体验!
在本文中,我们将探讨如何通过使用 JxBrowser 和 Quill.js 将现代富文本编辑器嵌入到 Java 桌面应用程序中,来克服 Swing、JavaFX 和 SWT 中内置编辑器的局限性。
Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片。
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现列重新排序,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢