Flextable 在 Shiny 页面上水平对齐(table,不是内容)

Flextable horizontal align on Shiny page (the table, not the content)

我一直在尝试将 flextable 对齐留在我闪亮的应用程序上,但没有成功。我可以在 rmarkdown/Word - 导出中执行此操作(如 所述),但不能在 Shiny 页面上执行。

示例代码:

ui <- fluidPage(

    fluidRow(
      uiOutput("flex")
    )
)
ui
server <- function(input, output) {

output$flex <- renderUI({
    tbl <- head(mtcars)

    return(flextable(tbl)) %>%
             htmltools_value()        
  })
}
server

当运行这样时,flextable居中。

如何左对齐? (或 margin-left: 0; margin-right: auto)。我一直在尝试使用 css,但似乎有些东西覆盖了我的设置,即使我在 .css 文件中用 !important 标记它也是如此。

下图:如果我进入检查模式并将 .tabwid table align-left 属性 设置为 0,table 将左对齐。但是,如果我在我的 css 文件中设置此 属性,然后加载应用程序,table 首先出现在左侧对齐,但随后很快再次居中。

感谢您的帮助,

-卡里

我不知道您如何定义 css 文件中的 table,但我认为这就是问题所在。我用这段代码解决了

ui <- fluidPage(
  shiny::tags$head(
    tags$style(
      ".tabwid table {margin-left: 0px !important;}"
    )
  ),

  fluidRow(
    uiOutput("flex")
  )
)
server <- function(input, output) {

  output$flex <- renderUI({
    tbl <- head(mtcars)

    return(flextable(tbl) %>%
      htmltools_value())        
  })
}
shinyApp(ui, server)

请注意样式标签中的 .tabwid table 选择器,我认为这是重要的一步。

希望对您有所帮助!!

您也可以在函数 htmltoools_value:

中使用参数 ft.align
library(shiny)
library(flextable)
library(magrittr)

ui <- fluidPage(

  fluidRow(
    uiOutput("flex")
  )
)
ui
server <- function(input, output) {

  output$flex <- renderUI({
    tbl <- head(mtcars)

    return(flextable(tbl)) %>%
      htmltools_value(ft.align = "left")        
  })
}
shinyApp(ui, server)