2017-10-27 5 views
2

私は以下のようにデータフレームを持っています。私はその後、データフレームをHTMLテーブルに変換しています。今、私は私の電子メールの本文についてはSending email in R via outlookデータフレームをテーブルに含めてOutlookからのメールをR

## init com api 
OutApp <- COMCreate("Outlook.Application") 
## create an email 
outMail = OutApp$CreateItem(0) 
## configure email parameter 
outMail[["To"]] = "[email protected]" 
outMail[["subject"]] = "some subject" 
outMail[["body"]] = df_html 
## send it      
outMail$Send() 

電子メールスレッドに与えられた素晴らしいソリューションを使用してOutlookからメールを送信しています

# Use RDCOMClient to send email from outlook 
library(RDCOMClient) 
# Use xtable to convert dataframe into html table 
library(xtable) 

# Create dataframe 
df <- as.data.frame(mtcars[1:3,1:3]) 

# Create HTML object 
df_html <- xtable(df) 

、私は私がしたいデータフレームDFをしたいですhtmlテーブルとして添付します。上記のコードを実行すると、以下のエラーメッセージが表示されます。

Error in `[[<-`(`*tmp*`, "body", value = list(mpg = c(21, 21, 22.8), cyl = c(6, : 
    Can't attach the RDCOMServer package needed to create a generic COM object 
In addition: Warning message: 
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : 
    there is no package called ‘RDCOMServer’ 

私はoutMail[["body"]] = paste0(df_html)にラインoutMail[["body"]] = df_htmlを変更すると、私は電子メールを取得するが、出力はテーブルとして付属していません。私の見通しには以下のようになる。

c(21, 21, 22.8), c(6, 6, 4), c(160, 160, 108) 

私はこれをテーブルにします。どうすればこれを達成できますか?ありがとう!

+0

親愛なる専門家、Rでこの問題を解決する方法上の任意の提案ですか? –

+0

私は、この問題の部分的な解決方法をリンクで提供しています - https://stackoverflow.com/questions/47248728/html-table-output-formatting-when-sending-email-from-microsoft-outlook-using- r。しかし、私は上記のリンクに見られるように私が新しい質問をした別の問題に遭遇しました。 –

答えて

2

Microsoft OutlookでデータフレームをHTMLテーブルとして貼り付けるという解決策が見つかりました。これはxtableパッケージを使用しています。ソリューションクレジットの一部は、ここから@lukeAに行きます - How to show an excel worksheet in outlook body by R

以下は解決策です。

library(RDCOMClient) 
library(xtable) 

x <- head(mtcars) 
y <- print(xtable(x), type="html", print.results=FALSE) 

body <- paste0("<html>", y, "</html>") 

OutApp <- COMCreate("Outlook.Application") 
outMail = OutApp$CreateItem(0) 
outMail[["To"]] = "[email protected]" 
outMail[["subject"]] = "TEST EMAIL" 
outMail[["HTMLbody"]] = body 
outMail$Send() 

これは、Microsoft Outlookでの出力の仕組みです。

Screenshot from Microsoft Outlook

関連する問題