gpt4 book ai didi

c# - 在 C# 中的 MS Word 文档的不同页面添加形状

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:44 25 4
gpt4 key购买 nike

我目前正在 Visual Studio 2010 中开发一个 .NET 应用程序。我想使用 C# 创建一个 MS Word 2010 文件。我已经创建了一个新文档并插入了一些段落。现在我想在文档中插入一些形状。因此,我在 Microsoft.Office.Interop.Word 命名空间中使用 Word.Document.Shapes.AddLine() 方法。我想在某些段落之后添加形状。当这些段落位于文档的第一页时,一切正常。但如果该段落在另一页上,该形状也将插入到第一页。我使用以下 C# 代码:

//Add paragraph
Word.Paragraph oPara2;
object oRng = NewDocument.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2= NewDocument.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = "Text";
oPara2.Range.InsertParagraphAfter();

//Vertical position of the shape
float position = (float) (oPara2.Range.get_Information (Word.WdInformation.wdVerticalPositionRelativeToPage) - 16.5 );
//Add Line
Word.Shape line2 = NewDocument.Shapes.AddLine(30, position, 800, position);

/*
*
*Some more paragraphs
*
**/
//Next Paragraph with shape
Word.Paragraph oPara13;
oRng = NewDocument.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara13 = NewDocument.Content.Paragraphs.Add(ref oRng);
oPara13.Range.Text = "Text";
oPara13.Range.InsertParagraphAfter();

//Vertical position of the shape
position = (float) (oPara13.Range.get_Information (Word.WdInformation.wdVerticalPositionRelativeToPage) - 16.5 );
//Add Line
Word.Shape line3 = NewDocument.Shapes.AddLine(30, position, 800, position);

oPara13 段落位于文档的第二页。计算出的位置值是正确的,但形状将被插入到第一页的这个位置。现在我想问一下如何使形状插入相应段落所在的正确页面。我已经尝试设置 AddLine 方法的 anchor 参数,但结果不佳。

最佳答案

首先,如果您只需要生成 .docx 文件,请考虑使用 OpenXML 项目。它会运行得更快,并且不会遇到与使用 Word 相关的问题(例如多线程、文件未正确关闭或许可)。使用 OpenXML 生成文档并非易事,但如果您使用生产力工具,它会变得容易得多 - 它允许您打开任何文档并生成可重新创建它的 C# 代码。

关于您的问题,Word 会准确地将其插入到您提出的位置 - 该函数接收绝对垂直坐标,您提供的坐标指向第一页。因此,不是使用 wdVerticalPositionRelativeToPage,而是使用 wdVerticalPositionRelativeToTextBoundary,在正常文本的常规情况下,它将为您提供绝对坐标。或者可以得到最后一段的位置

absoluteY= ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).Range.Information(wdVerticalPositionRelativeToTextBoundary)  

ActiveDocument.Shapes.AddLine(50, absoluteY, 150, absoluteY).Select

另一个注意事项 - 如果您不确定如何执行某项操作,请打开 Word 并录制您执行操作的宏。生成的代码很有启发性。您会注意到 Word 经常使用选择和选择。

关于c# - 在 C# 中的 MS Word 文档的不同页面添加形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16892535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com