(aspose.words .net)内容分别固定在一行左右俩端

要实现的效果如下:

因为某些情况,这里使用不了建立单元格来使它们分别在两端固定。

而且样品编号、样品名称是长度是不固定的。

那我们只能使用制表符来控制了

主要实现代码如下:

cs 复制代码
using Aspose.Words;
using Aspose.Words.Tabs;

public static void GenerateFlexibleTwoColumnLine(DocumentBuilder builder, string testNum, string testName)
{
    // 1. 关键:清除段落默认制表位,并设置一个右对齐的制表位
    //    位置 520 点需根据实际页面宽度调整,建议设为略小于页面宽度(如 A4 纸设为 595 点(约 21 厘米),520 点位于页面的右侧偏近边缘位置

    builder.ParagraphFormat.TabStops.Clear();
    builder.ParagraphFormat.TabStops.Add(new TabStop(520, TabAlignment.Right));

    // 2. 构建内容:前半部分 + 制表符(`\t`) + 后半部分
    string content = $"测试编号:{testNum}\t测试名称:{testName}";
    
    // 3. 写入段落
    builder.Writeln(content);
}

为什么要使用右对齐制表位?

需求 解决方案 原理
左侧内容长度不固定 自然左对齐 从 0 点开始排列
右侧内容长度不固定 右对齐制表位 文字的右端固定在制表位
左右内容独立 Tab 分隔 两部分互不影响

无论左右内容长度如何变化,布局始终稳定。

想要使用这种方案,是需理解制表位概念:

cs 复制代码
builder.ParagraphFormat.TabStops.Add(new TabStop(520, TabAlignment.Right, TabLeader.Dots));

1.、builder.ParagraphFormat.TabStops.Add(...)

  • 向当前段落的制表位集合中添加一个新的制表位

  • 影响当前段落及之后使用相同格式的段落

2、 new TabStop(520, TabAlignment.Right)

创建一个制表位对象,包含两个参数:

参数 含义
位置 520 距离页面左边缘 520 点(points)的位置
对齐方式 TabAlignment.Right 文字在制表位处右对齐

单位换算:1 点 = 1/72 英寸。100 点 ≈ 1.39 英寸 ≈ 3.53 厘米。

A4 纸宽度参考 :595 点(约 21 厘米)。所以 520 点位于页面的右侧偏近边缘位置。


3、TabAlignment 对齐方式详解

对齐方式 效果 示例
Left 文字从制表位向右延伸 │文字
Center 文字以制表位为中心 │ 文字 │
Right 文字从制表位向左延伸 文字│
Decimal 按小数点对齐(常用于数字) 12│.34
Bar 在制表位处画一条竖线

4、页面布局示意图

复制代码
页面左边缘                             页面右边缘(约595点)
0点                                   595点
│                                     │
├─────────────────────────────────────┤
│                                     │
│ 测试编号:12345    测试名称:叶芥菜     │
│                                     │
│ ↑                             ↑     │
│ │                             │     │
│ 自然起点               制表位(520点)│
│                       (右对齐)     │
└─────────────────────────────────────┘

Word 中的渲染逻辑

内容 位置计算
测试编号:ABC123 从页面左边缘 0 点开始,自然向左排列
\t 光标跳跃到下一个制表位(520 点)
测试名称:叶芥菜 文字右端对齐到 520 点,文字向左延伸

结果: "测试名称:叶芥菜" 紧贴右边界排列

相关推荐
csdn_aspnet4 小时前
C# 在逗号分割的字符串中判断是否包含指定字符
c#·正则·linq·string·regex·contains
宝桥南山5 小时前
Blazor Web Assembly - 体验一下Authentication State从Server共享给Client
microsoft·微软·c#·asp.net·.net·.netcore
淡海水7 小时前
02-06-历史-托管GC机制-垃圾回收如何影响数据结构选择
c#·编译·gc·机器码
longxiaozhang617 小时前
C# static:静态成员,小白也能看懂
开发语言·c#
longxiaozhang617 小时前
C#继承:让代码少写一点,偷懒的好方法
开发语言·c#
rockey62718 小时前
C#脚本引擎之AScript与DynamicExpresso对比
c#·.net·script·动态脚本
AI导出鸭18 小时前
怎么让文心做表格?AI导出鸭苹果版将文心输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格
人工智能·chatgpt·word·excel·ai导出鸭
Vae_Mars1 天前
C#中的delegate委托
开发语言·c#
wujian83111 天前
AI手机版怎么直接生成word?用“AI 导出鸭”把碎片时间变成专业文档
人工智能·ai·chatgpt·智能手机·word·ai导出鸭
qq_548612451 天前
.NET 平台报表工具汇总(.NET Framework /.NET6-8,中国式复杂报表、Web 嵌入、填报、导出打印)
前端·.net