You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩小DT包生成的DataTable行间距(RMarkdown生成HTML报表)

缩小DT表格行间距的解决方法

要让32行的DT表格在HTML报表里无需滚动就能显示,关键是通过自定义CSS调整行高和单元格内边距——DT自带的width/height这类options只能控制表格整体尺寸,没法直接调整行间距。

具体实现步骤

  1. 加载必要的包(htmltools用来嵌入CSS样式);
  2. 定义缩小行间距的CSS规则;
  3. 生成表格时应用该样式。

完整代码示例:

library(DT)
library(htmltools)

# 嵌入自定义CSS,调整行高和单元格内边距
tags$style(HTML("
  /* 缩小表格行的行高 */
  .dataTable tbody tr {
    line-height: 0.8em;
  }
  /* 减少单元格上下内边距,进一步压缩行间距 */
  .dataTable tbody td {
    padding: 3px 6px;
  }
"))

# 生成目标表格
DT::datatable(iris,
              colnames = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species'),
              rownames = FALSE,
              options = list(pageLength = 32, dom = 't'))

自定义调整

  • 可以修改line-height的数值(比如0.7em、0.9em),值越小行越紧凑;
  • 调整padding的上下值(第一个数值是上下内边距),比如改成2px 6px能进一步缩小行间距;
  • 如果只想让这个样式作用于当前表格,给表格加个ID,再修改CSS规则:
    # 给表格指定ID
    DT::datatable(iris,
                  colnames = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species'),
                  rownames = FALSE,
                  options = list(pageLength = 32, dom = 't'),
                  container = tags$table(id = "compact-iris-table"))
    
    对应的CSS改成:
    #compact-iris-table tbody tr {
      line-height: 0.8em;
    }
    #compact-iris-table tbody td {
      padding: 3px 6px;
    }
    

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:56:54