OpenXML SDK中边框仅应用于合并单元格的第一个单元格

7
使用OpenXML SDK为合并单元格范围应用边框时,边框仅在合并范围的第一个(左上角)单元格中显示。我完全不知道原因,这让我感到非常疯狂。使用生产力工具,我找不到我生成的样式表和正常工作的样式表之间有任何有意义的区别。以下是我的样式表生成的XML代码:
    <x:borders count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom />
        <x:diagonal />
      </x:border>
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom style="thick">
          <x:color auto="1" />
        </x:bottom>
        <x:diagonal />
      </x:border>
    </x:borders>
    <x:cellXfs xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:xf fontId="0" />
      <x:xf fontId="1" fillId="2" applyFont="1" applyFill="1" />
      <x:xf borderId="1" applyBorder="1" />
    </x:cellXfs>

我已经尝试了各种方法,例如在边框之前、之后等应用合并。


1
你能发布一下正常工作的XML吗?也许这两者之间的差异看起来不重要,但其他人将能够看到其重要性。 - Michael Richardson
1
@pnuts。是的,我没有发布它,因为它(样式表)完全相同。问题实际上是单元格本身,我已经找到了解决方法。 - sovemp
1个回答

9
我已经理解了。我原来认为,如果你将样式应用于一组合并单元格中的左上角单元格,则该样式将应用于整个合并。我发誓我读过某些文件说明是这样的,但实际上并非如此。有效的方法是将边框样式应用于合并范围中的每个单元格,而不仅仅是第一个单元格。
对我来说,最初的方式似乎很奇怪,因为所生成的输出无法通过OpenXML SDK以外的方式进行复制。

1
可以确认在2018年的官方Microsoft文档中,MergeCells类已经被声明。 - Palcente
1
您是否有如何设置每个单元格边框的示例?当我对每个单元格设置边框时,它不再合并。令人疯狂的是,如果您在 Excel 中突出显示所有这些单元格,则合并按钮会亮起来,就好像它们已经合并了一样。 - dmoore1181
实际上,撤销之前的话,我第一次做这个时可能出了点问题,现在它正在工作。感谢您的回答。 - dmoore1181
坏处是:您必须手动将相同的样式应用于每个单元格。好处是:边框正确地应用于合并范围作为整体。因此,如果您为左上角单元格设置了不同的顶部、左侧、右侧或底部边框,并将此样式用于所有单元格,则整个范围的边框将按预期显示。 - HJP

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