Html table 使用 R 从 Microsoft Outlook 发送电子邮件时的输出格式
Html table output formatting when sending email from Microsoft Outlook using R
我正在尝试使用 htmlTable
包将数据帧转换为 html table,然后使用 RDCOMClient
使用 Microsoft Outlook 作为电子邮件客户端发送电子邮件通过附加 html table 作为电子邮件正文进行打包。我是 HTML 编码的新手,所以我不太熟悉如何使用 HTML 标签格式化 table。下面是我正在尝试做的一个例子。
# Library to send email from Microsoft Outlook
library(RDCOMClient)
# Library to create HTML table
library(htmlTable)
# Reading data from inbuilt 'mtcars' dataset
x <- head(mtcars)
# Create HTML table
y <- htmlTable(x,
rnames = FALSE,
caption="This is from htmlTable package",
align = paste(rep("c", ncol(x)), collapse = "|"),
align.header = paste(rep("c", ncol(x)), collapse = "|"))
# add the table as body of the email
body <- paste0("<html>", y, "</html>")
## init com api
OutApp <- COMCreate("Outlook.Application")
## create an email
outMail = OutApp$CreateItem(0)
## configure email parameter
outMail[["To"]] = "test@test"
outMail[["subject"]] = "TEST"
outMail[["HTMLbody"]] = body
## send it
outMail$Send()
上面的代码有效,我什至得到了如下所示的电子邮件输出。
在 Microsoft Outlook 中使用上述代码发送的电子邮件的输出
我的问题是,如何格式化这个 table?我希望输出采用漂亮的 table 格式,行和列由行分隔。我可以添加输出中看到的列分隔线,但我无法添加行分隔线。我还想调整行和列之间的行间距,并将字体的格式更改为 calibri 11。下面是我正在寻找的输出。
需要格式化的行和列的输出
任何关于如何使用 htmlTable
包或任何其他解决方法实现此目的的帮助将不胜感激。非常感谢。
更新:下面是解决方案,感谢@Syfer 提供的宝贵意见。
library(RDCOMClient)
library(htmlTable)
x <- head(mtcars)
html_y <- htmlTable(x, rnames = FALSE)
body <- paste0("<html><head>
<style>
body{font-family:Arial, \"sans-serif\";}
table{border-left:1px solid #000000;border-top:1px solid #000000;}
table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:12px; font-weight:normal;}
table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:14px;}
</style>
</head><body>",
html_y,
"</body></html>")
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
outMail[["To"]] = "test@test.com"
outMail[["subject"]] = "TEST EMAIL"
outMail[["HTMLbody"]] = body
outMail$Send()
Microsoft Outlook 中的最终输出是这样的。
我还没有完成 'r' 但语法看起来合乎逻辑,所以我会尝试一下解决方案:
body <- paste0("<html><head><style>body{font-family:Arial, "sans-serif";}table{border-left:1px solid #000000;border-top:1px solid #000000;}table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:normal;}table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:bold;}</style></head><body>", y, "</body></html>")
基本上我已经在你的代码中添加了一些东西:
- html 文档的标题,其中包含您要发送的 HTML 文档的样式。
- body 的开始和结束标记。
<style>
body{font-family:Arial, "sans-serif"}
table{border-left:1px solid #000000;border-top:1px solid #000000;}
table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:normal;}
table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:bold;}
</style>
根据以上内容CSS,您应该可以根据自己的喜好设置边框颜色和字体。在电子邮件中呈现 table 后,它应该显示类似于:
的内容
如果这对你有用,请告诉我。
干杯
我正在尝试使用 htmlTable
包将数据帧转换为 html table,然后使用 RDCOMClient
使用 Microsoft Outlook 作为电子邮件客户端发送电子邮件通过附加 html table 作为电子邮件正文进行打包。我是 HTML 编码的新手,所以我不太熟悉如何使用 HTML 标签格式化 table。下面是我正在尝试做的一个例子。
# Library to send email from Microsoft Outlook
library(RDCOMClient)
# Library to create HTML table
library(htmlTable)
# Reading data from inbuilt 'mtcars' dataset
x <- head(mtcars)
# Create HTML table
y <- htmlTable(x,
rnames = FALSE,
caption="This is from htmlTable package",
align = paste(rep("c", ncol(x)), collapse = "|"),
align.header = paste(rep("c", ncol(x)), collapse = "|"))
# add the table as body of the email
body <- paste0("<html>", y, "</html>")
## init com api
OutApp <- COMCreate("Outlook.Application")
## create an email
outMail = OutApp$CreateItem(0)
## configure email parameter
outMail[["To"]] = "test@test"
outMail[["subject"]] = "TEST"
outMail[["HTMLbody"]] = body
## send it
outMail$Send()
上面的代码有效,我什至得到了如下所示的电子邮件输出。
在 Microsoft Outlook 中使用上述代码发送的电子邮件的输出
我的问题是,如何格式化这个 table?我希望输出采用漂亮的 table 格式,行和列由行分隔。我可以添加输出中看到的列分隔线,但我无法添加行分隔线。我还想调整行和列之间的行间距,并将字体的格式更改为 calibri 11。下面是我正在寻找的输出。
需要格式化的行和列的输出
任何关于如何使用 htmlTable
包或任何其他解决方法实现此目的的帮助将不胜感激。非常感谢。
更新:下面是解决方案,感谢@Syfer 提供的宝贵意见。
library(RDCOMClient)
library(htmlTable)
x <- head(mtcars)
html_y <- htmlTable(x, rnames = FALSE)
body <- paste0("<html><head>
<style>
body{font-family:Arial, \"sans-serif\";}
table{border-left:1px solid #000000;border-top:1px solid #000000;}
table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:12px; font-weight:normal;}
table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:14px;}
</style>
</head><body>",
html_y,
"</body></html>")
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
outMail[["To"]] = "test@test.com"
outMail[["subject"]] = "TEST EMAIL"
outMail[["HTMLbody"]] = body
outMail$Send()
Microsoft Outlook 中的最终输出是这样的。
我还没有完成 'r' 但语法看起来合乎逻辑,所以我会尝试一下解决方案:
body <- paste0("<html><head><style>body{font-family:Arial, "sans-serif";}table{border-left:1px solid #000000;border-top:1px solid #000000;}table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:normal;}table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:bold;}</style></head><body>", y, "</body></html>")
基本上我已经在你的代码中添加了一些东西:
- html 文档的标题,其中包含您要发送的 HTML 文档的样式。
- body 的开始和结束标记。
<style>
body{font-family:Arial, "sans-serif"}
table{border-left:1px solid #000000;border-top:1px solid #000000;}
table td{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:normal;}
table th{border-right:1px solid #000000;border-bottom:1px solid #000000;font-size:16px; font-weight:bold;}
</style>
根据以上内容CSS,您应该可以根据自己的喜好设置边框颜色和字体。在电子邮件中呈现 table 后,它应该显示类似于:
的内容如果这对你有用,请告诉我。
干杯