LINUX.ORG.RU

Ищу скрипт CSV->ASCII

 , ,


0

1

Приветик!

Хотел бы разобраться со следующим вопросом.

У меня, скажем, есть исходный CSV-файл (2 столбца, прибл. 10 строк, ";"-сепарированный). Я хотел бы преобразовать его в простую аски таблицу с разделителями. Условие такое, что нужно иметь возможность задавать ширину этих двух столбцов в целевой таблице (строки длиннее, чем хотелось бы). Может есть какой-то скрипт в свободном пробеге?

Ребятки, вы читать и понимать прочитанное умеете?

Ему надо длинные строки разбивать в многострочную ячейку

|----------------|-----------------------|
|                | Длинная предлинная    |
| cell 1.1       | строка, которая никак |
|                | не закончится         |
|----------------|-----------------------|
| cell 1.2       |  короткий текст       |
|----------------|-----------------------|
futurama ★★★★★ ()

Смысл в том, что я хочу вписать эту таблицу в Body емейла, а не прикреплять одт/одс файл. Таблица небольшая, мне кажется должно получиться

forest22 ()
Ответ на: комментарий от forest22

Смысл в том, что я хочу вписать эту таблицу в Body емейла, а не прикреплять одт/одс файл.

html подойдет? Самый простой вариант, же

futurama ★★★★★ ()
Ответ на: комментарий от futurama

Я бы не хотел нтмл. Пробовал разные варианты copy->paste из Либреоффиса, но приходит просто неформатированный текст. Мейл-клинтом я не пользуюсь, работаю из-под веба.

forest22 ()
Ответ на: комментарий от theNamelessOne

я баш на процентов 20-30 осилил. На сколько я осилю перл/питон? 5 %?

forest22 ()

1.pl:

#!/usr/bin/perl

use strict;
use warnings;
use Text::CSV_XS;
use Text::SimpleTable;

my $csv = Text::CSV_XS->new({sep_char => ";"});
my $tbl = Text::SimpleTable->new(10, 10);
while (<>) {
        if ($csv->parse($_)) {
                $tbl->row($csv->fields);
                $tbl->hr if !eof();
        }
}
print $tbl->draw;
1.csv:
111111;"test...test...test"
222222;"test"
333333;"very looooooooooooooooooooong line"
$ ./1.pl <1.csv 
.------------+------------.
| 111111     | test...te- |
|            | st...test  |
+------------+------------+
| 222222     | test       |
+------------+------------+
| 333333     | very looo- |
|            | ooooooooo- |
|            | ooooooooo- |
|            | ng line    |
'------------+------------'
ps: Если символ переноса длинных строк (-) не нужен, после use Text::SimpleTable; добавить:
$Text::SimpleTable::WRAP='';

Lavos ★★★★★ ()
Последнее исправление: Lavos (всего исправлений: 1)
Ответ на: комментарий от Lavos

Спасибо, работает.

По поводу того, что у меня не функционирует скопировать и затем отправить форматированный текст в веб-морду, так я, наверное, буду пользоваться для этих целей свежеустановленным тандербердом.

forest22 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.