在我的一个程序中,我需要在某个范围内将一些简单的htmls插入到word文档中,所以我使用这样的函数来用于我想要的每个范围
public static void AddHtmlTextAtRange(this Range range, string html)
{
var tempFilename = string.Format("{0}{1}{2}", Path.GetTempPath(), Guid.NewGuid().ToString(), ".html");
var formattedHtml = TextToHtmlPreProcessing(html);
File.WriteAllText(tempFilename, string.Format("<html> {0} </html>", formattedHtml));
range.InsertFile(tempFilename, ConfirmConversions:false);
File.Delete(tempFilename);
}
问题在于,在某些情况下,当我在这样的范围内添加html
文件时,会出现一些段落标题大小问题。
好像它取决于第一个int文件的敌人。 如果它的标题 - 则数字字体更大。
文件示例:
<html>
<h2 style=''><span>Document Purpose</span></h2>Some data info<span></span>
<h2 style=''><span>Scope & Requirements Traceability</span></h2>
Some data too
<table>
<tr>
<td style='border-collapse:collapse;border:1px solid black;font-weight: bold; background:#BFBFBF'>Ref</td>
<td style='border-collapse:collapse;border:1px solid black;font-weight: bold; background:#BFBFBF'>Requirement</td>
<td style='border-collapse:collapse;border:1px solid black;font-weight: bold; background:#BFBFBF'>Req Met (Y/N)</td>
<td style='border-collapse:collapse;border:1px solid black;font-weight: bold; background:#BFBFBF'>Action taken</td>
</tr>
<tr>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
</tr>
<tr>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
<td style='border-collapse:collapse;border:1px solid black;'> </td>
</tr>
</table>
<h2 style=''><span>Background</span></h2>
Some info
<h2 style=''><span>Risks, Assumptions, Issues and Dependencies</span></h2>
Risks info
</html>
否则,如果首先进入文本并且在进入标题之后 - 一切看起来都很好。
(从头顶上随意删除文本absolutley :))
文件示例:
<html>
I dont know
<h2 style=''><span>Test1</span></h2>
I dont know
<h2 style=''><span>Test2</span>
</h2>
I dont know too
<h2 style=''><span>Test3</span>
</h2>
Some datainfo
<h2 style=''><span>Test4</span>
</h2>
Test
</html>
输出示例:
所以,问题是,如何摆脱这个第一个标题更大的问题?
如果我在开始之后立即放置类似<p> </p>
之类的内容,那会有一些工作方法,但它会引起额外的新线,我真的不希望在那里。
也许有一些opton可以关闭它?
答案 0 :(得分:1)
这是一个如何移除占位符的示例&#34;&lt; p&gt; TEMPTEXT&lt; / p&gt;&#34;
private static void InsertHtml(Word.Range range, string html)
{
File.WriteAllText("temp.html", html);
range.InsertFile(Path.GetFullPath("temp.html"), Type.Missing, false);
//this is the interesting part
if (range.Find.Execute("TEMPTEXT")) {
//range now points to only the text TEMPTEXT
//We make sure to take the entire paragraph
var paragraph = range.Paragraphs[1];
//Then we remove the entire paragraph range
var paragraphRange = paragraph.Range;
paragraphRange.Delete();
}
}
我获得了这样的范围对象:
var doc = app.ActiveDocument;
var range = doc.StoryRanges[WdStoryType.wdMainTextStory];
range.Collapse(WdCollapseDirection.wdCollapseEnd);