如何使用Aspose.Words合并单元格

在生成Word文件的时候,经常会使用到表格元素,而表格又经常是需要合并单元格的。这个时候,我们使用Aspose.Words For .Net即可实现。

我们先看Aspose.Words.Tables.CellMerge的三个枚举值:

namespace Aspose.Words.Tables
{
    public enum CellMerge
    {
        None = 0,
        First = 1,
        Previous = 2
    }
}

其中None表示无需合并单元格;First表示当前单元格是合并单元格的第一个单元格;Previous表示当前单元格向前合并;

单元格合并分为竖直合并和横向合并。

所有合并单元格的要素我们都拿到了,那么想要实现如下所示的一个表格,便很容易了。

 

代码如下:

public void CreateTableDemo()
        {
            string tmplFile =
                @"C:\Users\wenzhong.xu\Desktop\TableDemoFile.docx";//word模板
            var now = DateTime.Now;
            var fileName = "TableCreated.docx";

            string downloadFile = @"C:\Users\wenzhong.xu\Desktop\" + fileName; //提供给用户下载的文件路径
            if (!File.Exists(tmplFile))
            {

            }
            if (!Directory.Exists(Path.GetDirectoryName(downloadFile)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(downloadFile));
            }
            File.Copy(tmplFile, downloadFile, true);//将模板内容复制给用户下载的word中
            
            Document doc = new Document(downloadFile);
            DocumentBuilder builder = new DocumentBuilder(doc);
            
            builder.MoveToBookmark("TABLEMARK"); // 移动到书签处

            builder.StartTable(); // 开始创建表格

            /**第一个单元格 start **/
            builder.InsertCell(); // 首先插入一个单元格
            // 设置单元格边框
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;

            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First; // 竖直方向合并的第一个单元格
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;

            // 设置单元格内容对齐方式
            builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

            builder.Write("RowSpan 2 , Cell 0 Content"); // 写入内容
            /**第一个单元格 end **/

            /**第二个单元格 start **/
            builder.InsertCell(); // 插入第二个单元格
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;

            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First; // 水平方向的合并是第一个单元格
            builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            builder.Write("Row 1, Cell 1 Content.");  // 写入内容
            /**第二个单元格 end **/

            /**第三个单元格 start **/
            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;

            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous; // 水平方向的合并是合并向前一个单元格
            // 因为是跟前一个单元格合并了,无需写入内容
            /**第三个单元格 end **/

            /**第四个单元格 start **/
            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous; // 水平方向的合并是合并向前一个单元格
            
            /**第四个单元格 end **/
            builder.EndRow(); // 这一行结束了

            
            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous; // 竖直方向的合并是合并向前一个单元格,即向上合并单元格
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None; // 水平方向的合并是第一个单元格,即不合并
            

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            builder.Write("Row 2, Cell 1 Content.");

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.Write("Row 2, Cell 2 Content.");

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.Write("Row 2, Cell 3 Content.");

            builder.EndRow();

            //builder.insert

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            builder.Write("Row 3, Cell 0 Content.");


            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First;
            builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
            builder.Write("Row 3, Cell 1 Content.");

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous;
            //builder.Write("Row 3, Cell 2 Content.");

            builder.InsertCell();
            builder.CellFormat.Borders.LineStyle = LineStyle.Single;
            builder.CellFormat.Borders.Color = Color.Black;
            builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
            builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
            //builder.Write("Row 2, Cell 3 Content.");
            builder.EndRow();

            builder.EndTable();//表格结束

            doc.Save(downloadFile);//保存word
        }

当前引用的Aspose.Words.dll为Aspose.Words for .NET 18.4破解版(支持NET.Core2.0),如有需要,可在主页下载。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值