Aspose.Words For .Net是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

接下来我们将进入“使用格式”的介绍,其中包括应用格式、介绍和创建表、添加和拆分表以及使用列和行。本文将为大家讲解如何水平和垂直合并表格中单元格。

>>Aspose.Words for .NET更新至最新版,欢迎下载体验

欢迎下载|体验更多Aspose文档管理产品 或 加入Aspose技术交流群(761297826)


表格中的垂直和水平合并单元格

MS Word中的表是一组独立的行。每行具有一组独立于其他行的单元格的单元格。因此,MS Word的表中没有逻辑“列”。“第一列”类似于“表中每一行的一组第一单元格”。 例如,可能有一个表格,其中第一行包含两个单元格:2cm和1cm,第二行包含不同的两个单元格:宽度为1cm和2cm。

HTML中的表格具有本质上不同的结构:每行具有相同数量的单元格,并且(对于问题而言很重要)每个单元格具有对应列的宽度,同一列中的所有单元格都具有相同的宽度。

如果CellFormat.HorizontalMerge和CellFormat.VerticalMerge返回不正确的值,请使用下面的代码示例。下面的示例演示单元格的水平和垂直合并。

Document doc = new Document(dataDir + "Table.MergedCells.doc");// Create visitor
SpanVisitor visitor = new SpanVisitor(doc);// Accept visitor
doc.Accept(visitor);/// <summary>
/// Helper class that contains collection of rowinfo for each row
/// </summary>
public class TableInfo
{public List<RowInfo> Rows{get { return mRows; }}private List<RowInfo> mRows = new List<RowInfo>();
}/// <summary>
/// Helper class that contains collection of cellinfo for each cell
/// </summary>
public class RowInfo
{public List<CellInfo> Cells{get { return mCells; }}private List<CellInfo> mCells = new List<CellInfo>();
}/// <summary>
/// Helper class that contains info about cell. currently here is only colspan and rowspan
/// </summary>
public class CellInfo
{public CellInfo(int colSpan, int rowSpan){mColSpan = colSpan;mRowSpan = rowSpan;}public int ColSpan{get { return mColSpan; }}public int RowSpan{get { return mRowSpan; }}private int mColSpan = 0;private int mRowSpan = 0;
}public class SpanVisitor : DocumentVisitor
{/// <summary>/// Creates new SpanVisitor instance/// </summary>/// <param name="doc">Is document which we should parse</param>public SpanVisitor(Document doc){//从文档中获取表的集合mWordTables = doc.GetChildNodes(NodeType.Table, true);//将文档转换为HTML//我们将解析HTML以确定每个单元格的rowpan和colspanMemoryStream htmlStream = new MemoryStream();HtmlSaveOptions options = new HtmlSaveOptions();options.ImagesFolder = Path.GetTempPath();doc.Save(htmlStream, options);//将 HTML加载到XML文档中XmlDocument xmlDoc = new XmlDocument();htmlStream.Position = 0;xmlDoc.Load(htmlStream);//获取HTML文档中的表集合XmlNodeList tables = xmlDoc.DocumentElement.SelectNodes("// Table");foreach (XmlNode table in tables){TableInfo tableInf = new TableInfo();//获取表中的行集合XmlNodeList rows = table.SelectNodes("tr");foreach (XmlNode row in rows){RowInfo rowInf = new RowInfo();//获取单元格的集合XmlNodeList cells = row.SelectNodes("td");foreach (XmlNode cell in cells){//确定当前单元格的行跨度和列跨度XmlAttribute colSpanAttr = cell.Attributes["colspan"];XmlAttribute rowSpanAttr = cell.Attributes["rowspan"];int colSpan = colSpanAttr == null ? 0 : Int32.Parse(colSpanAttr.Value);int rowSpan = rowSpanAttr == null ? 0 : Int32.Parse(rowSpanAttr.Value);CellInfo cellInf = new CellInfo(colSpan, rowSpan);rowInf.Cells.Add(cellInf);}tableInf.Rows.Add(rowInf);}mTables.Add(tableInf);}}public override VisitorAction VisitCellStart(Cell cell){// 确定当前表的索引int tabIdx = mWordTables.IndexOf(cell.ParentRow.ParentTable);//确定当前行的索引int rowIdx = cell.ParentRow.ParentTable.IndexOf(cell.ParentRow);//确定当前单元格的索引int cellIdx = cell.ParentRow.IndexOf(cell);//确定当前单元格的colspan和rowpanint colSpan = 0;int rowSpan = 0;if (tabIdx < mTables.Count &&rowIdx < mTables[tabIdx].Rows.Count &&cellIdx < mTables[tabIdx].Rows[rowIdx].Cells.Count){colSpan = mTables[tabIdx].Rows[rowIdx].Cells[cellIdx].ColSpan;rowSpan = mTables[tabIdx].Rows[rowIdx].Cells[cellIdx].RowSpan;}Console.WriteLine("{0}.{1}.{2} colspan={3}\t rowspan={4}", tabIdx, rowIdx, cellIdx, colSpan, rowSpan);return VisitorAction.Continue;}private List<TableInfo> mTables = new List<TableInfo>();private NodeCollection mWordTables = null;
}

转换为水平合并的单元格

在最新版本的MS Word中,单元格按其宽度水平合并。而合并标志是在较旧的技术中使用的,例如Cell.CellFormat.HorizontalMerge。当单元按其宽度水平合并时,将不使用合并标志  ,并且也无法检测到哪些单元被合并。Aspose.Words提供ConvertToHorizontallyMergedCells方法,以将按其宽度水平合并的单元格转换为通过标志水平合并的单元格。它只是  转换表并在需要时添加新的单元格。下面的代码示例演示上述方法的工作。

Document doc = new Document();Table table = doc.FirstSection.Body.Tables[0];
table.ConvertToHorizontallyMergedCells();   //合并的单元格具有适当的合并标志

Aspose.Words for .NET使用表格教程之水平和垂直合并表格中单元格相关推荐

  1. 【element-ui】 el-table 表格动态合并相同数据单元格最全教程,可指定列+自定义合并条件,附完整代码

    el-table合并单元格 1.固定合并 官方挺提供的合并具体某行列的方法:el-table合并行或列 通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含 ...

  2. excel表格中单元格里面有个斜杠怎么写字?

    在使用excel时可能会遇到表头区域单元格中有条斜杠,这种表格要怎么写字呢?下面小编就给大家带来excel表格中单元格里面有个斜杠要如何写字的教程. excel表格中单元格里面有个斜杠怎么写字? 1. ...

  3. border-collapse:collapse;清除表格中单元格的空隙

    border-collapse:collapse;清除表格中单元格的空隙 转载于:https://www.cnblogs.com/lengv10/p/3718613.html

  4. html怎么把excel表格合并单元格,Excel中如何快速合并多个单元格

    Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件.当我们制作表格中重复信息过多,通常会把重复信息的单元格进行合并.下面就给大家介绍 ...

  5. EduCoder-Web程序设计基础-html5-表格基本结构-第4关:表格中单元格样式的设置

    目录 任务描述 相关知识 编程要求 测试说明 代码示例 任务描述 本关任务:编写一个两行两列的表格网页,表格中的单元格样式进行设置.效果如下图所示: 表格效果3 相关知识 为了完成本关任务,你需要掌握 ...

  6. 【知识兔】Excel教程:批量合并相同内容单元格神技

    大家好,今天知识兔跟大家分享一下关于批量合并相同内容单元格的方法有哪些,这是一位同学在群里求助的案例,当时群内针对这个问题各位小伙伴们抛出了多种解决方法,索性知识兔小编就整理成专题文章来跟大家分享一下 ...

  7. python合并word表格单元格_合并Word 表格中单元格

    //合并Word 表格中单元格 procedure mergeWordCell; var WordApp: TWordApplication; WordDoc: TWordDocument; DocI ...

  8. Excel表格中多个文本内容快速合并到一个单元格内

    Excel表格中多个文本内容快速合并到一个单元格内 目录 Excel表格中多个文本内容快速合并到一个单元格内 1.在合并单元格内输入"=PHONETIC()"函数 2.框选需要合并 ...

  9. Pyqt5 在表格中单元格设置下拉框,并根据选项改变背景颜色

    关于怎么在表格中单元格设置下拉框,并根据选项改变背景颜色 def table_combox_init(self):combox_statePlm_jria_list = ['', '无', 'O', ...

最新文章

  1. 技术网站 --websystique.com
  2. MySQL数据库一个字段对应多个值得模糊查询
  3. a类不确定度计算器_统统帮您搞定:LIMS系统,换版、内审、期间核查、不确定度、数据分析…………...
  4. c# 对文件流的读写
  5. 设计模式 - 建造者模式(Builder Pattern)
  6. 【基础中的基础】引用类型和值类型,以及引用传递和值传递
  7. Android Q 将增强未知来源应用安装的安全性
  8. LTE学习笔记:频带、信道带宽和频点号EARFCN
  9. 1047: 对数表 Java
  10. 应用随机过程张波商豪_应用随机过程张波课后答案
  11. 中国天气网-天气预报接口api
  12. IP签名档美化版api源码PHP
  13. 杭银消费金融拟增资扩股:杭州银行认购3.7亿股,曾被罚50万元
  14. ubuntu18.04下EnlightenGAN运行过程记录
  15. 在pcb放置坐标标注_PCB设计定位基准符号和尺寸
  16. Apache Airflow系列文章
  17. 华为海思人脸识别方案 海思 3516嵌入式 Linux系统人脸识别开发模组套件
  18. 【SwiftUI模块】0007、SwiftUI新手指引-新手指示-聚光灯介绍说明
  19. 鳄鱼法则(特转此贴,给不会止损的朋友们)
  20. 深入理解 Koa 中间件之 “ 洋葱模型 ”

热门文章

  1. 夫妻分居申办上海户口全攻略
  2. 应届毕业生找java初级开发工作需要掌握哪些知识或者技术?
  3. 最强朋友圈展示面配文
  4. 基于Lattice XO2-4000HC FPGA核心板及电子森林综合训练底板的ADC数字电压表及OLED显示设计(Verilog)
  5. idea maven 创建项目无src 解决方案
  6. 制作京东快报页面html,HTML第6章上机练习3(制作京东快报页面)
  7. 关于vue-admin-element在切换角色登入后权限不足致使页面404
  8. 服务器端无微信第三方平台事件传入,致使粉丝关注、公众号自动回复失效
  9. 国产单片机GD32系列开坑,带你零死角玩转GD32 第五章
  10. oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试