在R中格式化HTML表格-使用CSS

时间:2018-12-26 14:37:55

标签: html css r

我在R中使用包“ htmlTable”,并试图格式化表格。具体来说,我想删除最上面的边框,并将其余边框更改为黑色。请运行下面的代码以获取我正在查看的表。

任何帮助将不胜感激!

doStuff

2 个答案:

答案 0 :(得分:1)

我认为,您用来生成<html>的方法限制了格式化的选项。以下是我对绝对控制样式应如何执行的建议。它还允许您使用w3schools之类的资源来修复完美的格式:

您的数据:

Code <- c("AB", "BC", "MB", "NB")
Numbers <- c(148137, 186955, 37755, 17376)
DataFrame <- data.frame(Code, Numbers, stringsAsFactors = FALSE)
names(DataFrame) <- c("Territory", "Number of People")

我使用该库来生成<html>表。没有那么几行代码 和您一样,但也不缺乏灵活性。在这里,我使用 remotes包:

remotes::install_github('trosendal/hlt')
library(hlt)

基本表结构和添加样式:

my_table <- hlt::html_table(DataFrame)
hlt::tag_attr(my_table) <- list(id = "table1", class = "gmisc_table")

桌子前后的小东西:

a <- html_p("Table 1. Test")
b <- html_p("<b>Source</b><br>[1] Test Source")

将表格像以前一样放在<div>中:

my_table <- hlt::html_div(a +
                          my_table +
                          b)
hlt::tag_attr(my_table) <- list(style = "margin: 0 auto; display: table; margin-top: 1em;")

添加样式(与您的样式相同,再加上建议的更改)

head <- hlt::html_head(hlt::html_meta(charset="utf-8") +
                       hlt::html_meta("http-equiv" = "Content-type") +
                       hlt::html_meta("content" = "text/html") +
                       hlt::html_style(c(".gmisc_table {",
                                         "    width:150%;",
                                         "    border:1px solid black;",
                                         "    border-collapse:collapse",
                                         "}",
                                         ".gmisc_table th {",
                                         "    border-bottom: 2px solid grey;",
                                         "    border-left: 1px solid black;",
                                         "    text-align: center;",
                                         "}",
                                         ".gmisc_table tr:nth-child(even) {",
                                         "    background-color: #adadad;",
                                         "}",
                                         ".gmisc_table tr:nth-child(odd) {",
                                         "    background-color: transparent;",
                                         "}",
                                         ".gmisc_table td {",
                                         "    background-color: transparent;",
                                         "    text-align: center;",
                                         "    border-left: 1px solid black",
                                         "}")))

将片段拼接成一页:

page <- hlt::html_html(head +
                       hlt::html_body(my_table))
tab <- tempfile()
capture.output(file = tab, print(page))
browseURL(tab)

目前尚不清楚您最终希望如何格式化 桌子要我删除了顶行并添加了所有黑色固体 否则边界。但我希望以此说明 方法提供了您可能需要的所有灵活性。我已开始 也使用htmlTable包在sva.se上制作表格 很快发现需求总是比需求复杂 编写html的R包中的功能。

答案 1 :(得分:0)

如果您了解基本的CSS,则可以轻松轻松地格式化表格中的任何元素:

x <- htmlTable(DataFrame, align = "c",
      rnames = FALSE,
      caption = "<b> <center> <font face = Times New Roman> Table 1. Test  <br> <br>",
      tfoot = "<b> Source </b> <br> [1]  Test Source",
      header = paste(c(" Territory", "Number of People")),
      css.caption = "color:red;",
      col.rgroup = c("none", "#ADADAD"),
      padding.tspanner = "", ctable = TRUE)


## add id to gmisc_table
x <- gsub('(?<=.gmisc_table.)', ' id = \'gmisc_table\'', x, perl = TRUE)
formats <- paste(x)
attributes(formats) <- attributes(x)

## Edit css
css <- '
<style>
/* Remove the top border */
#gmisc_table > thead > tr > th {
  border-top: none !important;
}

/* Add boarder to the table body */
#gmisc_table > tbody > tr > td {
  border: 2px solid black;
}
</style>'

gsub('^', css, formats)