要实现的效果如下:

因为某些情况,这里使用不了建立单元格来使它们分别在两端固定。
而且样品编号、样品名称是长度是不固定的。
那我们只能使用制表符来控制了
主要实现代码如下:
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 点,文字向左延伸 |
结果: "测试名称:叶芥菜" 紧贴右边界排列