3

Я создаю документ Word (.docx), используя LibreOffice. Мне нужно включить некоторые числовые результаты, которые я вычислил в R. Они выглядят как простая таблица чисел с текстовыми надписями для строк и столбцов и несколькими NA здесь и там (строка, представляющая константу R "отсутствующее значение").

Я попытался сохранить таблицу на диск в формате .csv, открыть ее в LibreOffice Calc и вставить ее в Writer. Он вставлен как объект OLE. Это имеет несколько проблем. Во-первых, это означает, что документ большой и медленно открывается. Во-вторых, я боюсь проблем с совместимостью (я не верю, что объект OLE будет работать нормально, когда кто-то другой читает эту вещь с помощью Word вместо LibreOffice). В-третьих, он форматирует числа в таблице как числа (с корректировкой вправо), но значения NA в виде текста (с корректировкой слева), а также все числа в строке, содержащие NA в качестве текста. Так что это очень трудно читать, так как столбцы не совпадают.

Я знаю, что мог бы создать таблицу в LibreOffice и скопировать туда цифры. Но есть ли более быстрое решение, может быть, какое-нибудь дополнение Word, которое автоматически создает таблицы из .csv, или может быть способ сохранить выходные данные R в виде таблицы HTML (которые автоматически форматируются при вставке в LibreOffice)? Мне не нужны причудливые взгляды, пока все выстраивается и создает собственную таблицу Word.

2 ответа2

2

Оказалось, что LibreOffice также имеет функцию Paste Special (duh). Это позволяет мне выбирать "форматированный текст" или "HTML" вместо "calc8" при вставке таблицы, скопированной из Calc. Я по-прежнему предпочитаю решение на основе сценариев, поскольку в Paste Special используется форматирование, представленное в Calc, где строки с символом NA выровнены по левому краю, а строки только с номерами - по правому краю.

1

Вы можете просто открыть .csv в LibreOffice (writer), выбрать все и щелкнуть по мастеру таблицы:

В моем случае это привело к:


Что касается способа 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .