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-242cadbc{}.cl-242764a6{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-242764ba{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-24299d48{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-2429aec8{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-2429aed2{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-2429aedc{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-242cadbc'><thead><tr style="overflow-wrap:break-word;"><th class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764a6">a</span></p></th><th class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764a6">b</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-2429aed2"><p class="cl-24299d48"><span class="cl-242764ba">1</span></p></td><td class="cl-2429aed2"><p class="cl-24299d48"><span class="cl-242764ba">6</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">2</span></p></td><td class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">7</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">3</span></p></td><td class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">8</span></p></td></tr><tr style="overflow-wrap:break-word;"><td  rowspan="2"class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">4</span></p></td><td class="cl-2429aec8"><p class="cl-24299d48"><span class="cl-242764ba">9</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2429aedc"><p class="cl-24299d48"><span class="cl-242764ba">10</span></p></td></tr></tbody></table></div>
ft <- fix_border_issues(ft)
print(ft)
#> <style></style>
#> <div class="tabwid"><style>.cl-2434ba16{}.cl-242f779a{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-242f77a4{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-2431a2cc{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-2431b460{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-2431b46a{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-2431b46b{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-2434ba16'><thead><tr style="overflow-wrap:break-word;"><th class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f779a">a</span></p></th><th class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f779a">b</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-2431b46a"><p class="cl-2431a2cc"><span class="cl-242f77a4">1</span></p></td><td class="cl-2431b46a"><p class="cl-2431a2cc"><span class="cl-242f77a4">6</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f77a4">2</span></p></td><td class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f77a4">7</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f77a4">3</span></p></td><td class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f77a4">8</span></p></td></tr><tr style="overflow-wrap:break-word;"><td  rowspan="2"class="cl-2431b46b"><p class="cl-2431a2cc"><span class="cl-242f77a4">4</span></p></td><td class="cl-2431b460"><p class="cl-2431a2cc"><span class="cl-242f77a4">9</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-2431b46b"><p class="cl-2431a2cc"><span class="cl-242f77a4">10</span></p></td></tr></tbody></table></div>