我正在使用 LibreOffice 创建 Word 文档 (.docx)。我需要包含一些我在 R 中计算的数字结果。它们看起来像一个简单的数字表,行和列带有文本标题,以及一些 NA(表示 R 的“缺失值”常量的字符串)。
我尝试将表格以 .csv 格式保存到磁盘,在 LibreOffice Calc 中打开,然后将其复制粘贴到 Writer 中。它被插入为 OLE 对象。这有几个问题。首先,这意味着文档很大,打开速度很慢。其次,我担心兼容性问题(当其他人使用 Word 而不是 LibreOffice 阅读此内容时,我不相信 OLE 对象会正常工作)。第三,它将表格中的数字格式化为数字(右对齐),但将 NA 值格式化为文本(左对齐),并将包含 NA 的行上的所有数字格式化为文本。因此很难阅读,因为列没有对齐。
我知道我可以在 LibreOffice 中创建一个表格,然后将数字复制粘贴到那里。但是有没有更快的解决方案,也许是一些可以自动从 .csv 创建表格的 Word 插件,或者可能是将 R 输出保存为 HTML 表格的方法(粘贴到 LibreOffice 中时会自动格式化)?我不需要花哨的外观,只要一切都排列整齐并创建一个原生的 Word 表格即可。
答案1
您只需在 LibreOffice(writer)中打开 .csv,选择全部,然后单击表格向导:
就我而言,这导致了:
至于 HTML 方式,以下 PERL 脚本将执行您需要的操作(我假设您使用的是 Linux 并且有一个以空格分隔的 .csv 文件):
#!/usr/bin/perl -w
print <<EOF;
<html>
<head>
<style>
TABLE{
border-collapse:collapse;
}
TD{
border:1px solid black;
padding:3px;
text-align:left;
}
</style>
</head>
<body>
<table>
EOF
while(<>){
chomp;
print "<tr>";
my @a=split(/\s+/);
print "<td>$_</td>" foreach (@a);
print "</tr>\n";
}
print "</table></body></html>\n";
将脚本保存为 csv2html.pl 并像这样运行:
$ perl csv2html.pl input.csv > output.html
答案2
事实证明,LibreOffice 还具有选择性粘贴功能(废话)。它允许我在粘贴从 Calc 复制的表格时选择“格式化文本”或“HTML”而不是“calc8”。我仍然更喜欢脚本解决方案,因为选择性粘贴使用 Calc 中现有的格式,其中带有 NA 的行左对齐,只有数字的行右对齐。