我从一堆模板文件生成文档,此外,我加入了一些表,因为HTML altChunk
S(因为它不是试图创建的OpenXML表容易得多)。 这一切都工作得很好,给我我想要的结果。 但是,由于一些不足与方式的altChunk
正由字(尤其是在Mac)的一些版本处理并不能自动更新TOC,我们决定将它设置为贯穿在Sharepoint字自动化服务我们的报道。 所以,我们生成文档如前,然后让它通过Word自动化的扁平化altChunk
成一个单一的文件和更新目录。
这解决了我们所有兼容性问题和更新我们的TOC,但不幸的是,有一个副作用。 我们的桌子现在又增加了上方和下方,使表比以前更长的文本空间。 这不是一个问题之前,即使我们打开文档,并在Word中重新保存(因此压扁所有altChunk
S)所以这似乎是特定于Word自动化的一个问题。
有没有人见过这个? 有没有一种方法,使用HTML altChunk
包含表强制Word自动化不要弄乱我的表?
编辑 :如果我选择在Word中的违规表并选择主页选项卡,“行和段落间距”,然后我就可以选择“删除空段后”崩溃表回到它应该是什么。 因此,它似乎是字自动化服务要在表中的段落后添加空间,而这个词本身没有。 没有任何人有任何想法如何停止?
他是一个什么样这些表看起来像HTML一个很简单的例子:
table { font-size: 0.8em; border-collapse:collapse; font-family: calibri, sans-serif } caption { font-size: 1.05em; font-weight: bold; background-color: transparent; } tbody td { border: solid #909090 1px; font-size: 0.9em; } thead th { border-width: 0 1px 0 1px; border-style: solid; border-color: #909090; } .tableNotes { font-size: 6pt; font-family: arial, sans-serif; } tbody td { text-align: center; } thead th { background-color: #98a5b5; } .sectionHeader { font-weight: bold; text-align: left; background-color: #becfe3; }
<body> <table width="100%"> <thead> <tr> <th class="col0">col0</th> <th class="col1">col1</th> <th class="col2">col2</th> <th class="col3">col3</th> <th class="col4">col4</th> <th class="col5">col5</th> <th class="col6">col6</th> <th class="col7">col7</th> </tr> </thead> <tbody> <tr> <td class="sectionHeader" colspan="8">Section 1</td> </tr> <tr> <td class="col0">4</td> <td class="col1">4</td> <td class="col2">4</td> <td class="col3">4</td> <td class="col4">4</td> <td class="col5">4</td> <td class="col6">4</td> <td class="col7">2</td> </tr> </tbody> </table> </body>
我想明确地设置padding-bottom: 0
的td
,但并没有任何区别。 它会在HTML的方式是相当多的,应该如何看待在Word文档中,但Word自动化服务增加了空间的每一行出于某种原因的底部。
插入的代码altChunk
看起来是这样的:
Paragraph p = placeholder.Ancestors<Paragraph>().FirstOrDefault();
if (p != null)
{
var chunk = WordDoc.MainDocumentPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Html);
var id = WordDoc.MainDocumentPart.GetIdOfPart(chunk);
// populate the chunk
using (var stream = chunk.GetStream())
{
using (StreamWriter tw = new StreamWriter(stream))
{
tw.Write(HTMLFragments[tableName]);
}
}
// Now we need an altChunk to insert into the parent
AltChunk altChunk = new AltChunk()
{
Id = id,
AltChunkProperties = new AltChunkProperties()
{
MatchSource = new MatchSource()
{
Val = true
}
}
};
p.InsertAfterSelf(altChunk);
p.Remove();
}
其中HTMLFragments
是一个Dictionary<string,string>
包含表的HTML要在doc插入。