表文本通过字自动化服务运行后得到额外的空格(Table text gets extra spacin

2019-10-21 04:28发布

我从一堆模板文件生成文档,此外,我加入了一些表,因为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: 0td ,但并没有任何区别。 它会在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插入。

Answer 1:

跌跌撞撞周围,尝试不同的组合,后marginpadding连接使用各种元素css ,我决定做一些完全反直觉的,并尝试包裹单元格的内容在p标签。 我在想,我也许能明确地设置在边缘ptd的方式。 所以这:

<td class="col0">4</td>

成为本:

<td class="col0"><p>4</p></td>

而令人惊奇的,它的实际工作! 没有我实际上添加任何CSS针对这些p标签。 这是反直觉的,当然,因为如果你这样做与原来的HTML你最终会在周围,因为在默认保证金的单元格的文本添加更多的空间p标签,但在这里它实际上删除。

这似乎是在路上的一个错误的Word自动化服务解释HTML altChunk与字正确怎么做。



文章来源: Table text gets extra spacing after running through word automation services