Skip to contents

When cells are merged, the rendered borders will be those of the first cell. If a column is made of three merged cells, the bottom border that will be seen will be the bottom border of the first cell in the column. From a user point of view, this is wrong, the bottom should be the one defined for cell 3. This function modify the border values to avoid that effect.

Usage

fix_border_issues(x, part = "all")

Arguments

x

flextable object

part

partname of the table (one of 'all', 'body', 'header', 'footer')

Examples

library(officer)
dat <- data.frame(a = 1:5, b = 6:10)
ft <- flextable(dat)
ft <- theme_box(ft)
ft <- merge_at(ft, i = 4:5, j = 1, part = "body")
ft <- hline(ft,
  i = 5, part = "body",
  border = fp_border(color = "red", width = 5)
)
print(ft)
#> <style></style>
#> <div class="tabwid"><style>.cl-df8ca6da{}.cl-df8795d2{font-family:'DejaVu Sans';font-size:11pt;font-weight:bold;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-df8795dc{font-family:'DejaVu Sans';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-df89af48{margin:0;text-align:right;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-df89bf7e{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 0.75pt solid rgba(102, 102, 102, 1.00);border-top: 0.75pt solid rgba(102, 102, 102, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-df89bf88{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 0.75pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-df89bf92{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 5pt solid rgba(255, 0, 0, 1.00);border-top: 0.75pt solid rgba(102, 102, 102, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table data-quarto-disable-processing='true' class='cl-df8ca6da'><thead><tr style="overflow-wrap:break-word;"><th class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795d2">a</span></p></th><th class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795d2">b</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-df89bf88"><p class="cl-df89af48"><span class="cl-df8795dc">1</span></p></td><td class="cl-df89bf88"><p class="cl-df89af48"><span class="cl-df8795dc">6</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">2</span></p></td><td class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">7</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">3</span></p></td><td class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">8</span></p></td></tr><tr style="overflow-wrap:break-word;"><td  rowspan="2"class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">4</span></p></td><td class="cl-df89bf7e"><p class="cl-df89af48"><span class="cl-df8795dc">9</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df89bf92"><p class="cl-df89af48"><span class="cl-df8795dc">10</span></p></td></tr></tbody></table></div>
ft <- fix_border_issues(ft)
print(ft)
#> <style></style>
#> <div class="tabwid"><style>.cl-df944638{}.cl-df8f44e4{font-family:'DejaVu Sans';font-size:11pt;font-weight:bold;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-df8f44ee{font-family:'DejaVu Sans';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-df91572a{margin:0;text-align:right;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-df916724{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 0.75pt solid rgba(102, 102, 102, 1.00);border-top: 0.75pt solid rgba(102, 102, 102, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-df916725{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 0.75pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-df91672e{width:0.75in;background-color:transparent;vertical-align: middle;border-bottom: 5pt solid rgba(255, 0, 0, 1.00);border-top: 0.75pt solid rgba(102, 102, 102, 1.00);border-left: 0.75pt solid rgba(102, 102, 102, 1.00);border-right: 0.75pt solid rgba(102, 102, 102, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table data-quarto-disable-processing='true' class='cl-df944638'><thead><tr style="overflow-wrap:break-word;"><th class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44e4">a</span></p></th><th class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44e4">b</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-df916725"><p class="cl-df91572a"><span class="cl-df8f44ee">1</span></p></td><td class="cl-df916725"><p class="cl-df91572a"><span class="cl-df8f44ee">6</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44ee">2</span></p></td><td class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44ee">7</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44ee">3</span></p></td><td class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44ee">8</span></p></td></tr><tr style="overflow-wrap:break-word;"><td  rowspan="2"class="cl-df91672e"><p class="cl-df91572a"><span class="cl-df8f44ee">4</span></p></td><td class="cl-df916724"><p class="cl-df91572a"><span class="cl-df8f44ee">9</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-df91672e"><p class="cl-df91572a"><span class="cl-df8f44ee">10</span></p></td></tr></tbody></table></div>