在C#中为段落范围添加制表位

5
我需要帮助使用Word Interop和C#将制表位(位置在1厘米处)添加到Word文档中。以下是我已经尝试过的内容。
Range range = paragraph.Range;
int firstTabStart = range .Start;
range .SetRange(firstTabStart, firstTabStart);
range .Paragraphs.TabStops.Add(5, WdTabAlignment.wdAlignTabRight);

当我打开我的Word文档时,我看不到任何制表位。但是,我可以使用以下方法插入制表位对齐:
range .InsertAlignmentTab((int)WdAlignmentTabAlignment.wdCenter,
    (int)WdAlignmentTabRelative.wdMargin);

虽然这些标签在文档中是绝对的,我无法编辑它们。请帮忙。

2
谷歌说1厘米=28个点。虽然不能完全解决你的问题,但供参考。 - klugerama
1
或者您可以使用 application.CentimetersToPoints(2f)(在您的 Word 应用程序对象上),或者 MillimetersToPointsInchesToPoints 等。 - joshuahealy
1个回答

2

我无法重现您遇到的问题,但是我会粘贴我测试过的代码,这样您就可以看看它是否与您现有的代码有任何不同。

在每种情况下,我都看到制表位出现在标尺上的1和2厘米处:

  • 使用.doc或.docx文件
  • 使用paragraphs.TabStops而不是range.Paragraphs.TabStops
  • 使用空白文档
  • 使用包含1个或多个段落的文档
  • TabStops.Add方法中传递第三个参数WdTabLeader

而且,这是在Word 2010中完成的。

class Start
{
    public static void Main()
    {
        // Open a doc file.
        Application application = new Application();
        Document document = application.Documents.Open(@"C:\Users\mmonkan\Documents\word.docx");

        Paragraphs paragraphs = document.Paragraphs;
        Paragraph paragraph = paragraphs[1];
        Range range = paragraph.Range;
        range.SetRange(0, 0);

        range.Paragraphs.TabStops.Add(28, WdTabAlignment.wdAlignTabRight);
        range.Paragraphs.TabStops.Add(56, WdTabAlignment.wdAlignTabRight);

        // Close word.
        application.Quit(WdSaveOptions.wdSaveChanges);

        Console.ReadLine();
    }
}

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接