Программирование - это решение проблем. Но иногда проблема действительно большая и кажется слишком сложной. Тогда вам нужно разбить его на более мелкие проблемы, которые легче решить.
Вы говорите, что хотите превратить файл CSV в файл Excel. Вам нужно будет решить, хотите ли вы сначала XLS или XLSX . Оба формата выглядят одинаково, когда вы открываете их в Excel, но на самом деле они очень разные.
При поиске чего-либо в Perl первое место для поиска всегда будет metacpan . Давайте попробуем:
Я выберу Excel :: Writer :: XLSX. Quick Start часть документов предлагает создать файл и написать один столбец.
use Excel::Writer::XLSX; # Step 0
my $workbook = Excel::Writer::XLSX->new( 'perl.xlsx' ); # Step 1
$worksheet = $workbook->add_worksheet(); # Step 2
$worksheet->write( 'A1', 'Hi Excel!' ); # Step 3
$workbook->close(); # Step 4
Теперь мы знаем, где искать записи в файл Excel. Но есть еще некоторые проблемы. Давайте разберемся с этим.
Googling "Как мне прочитать файл CSV в Perl?" дает нам эту статью как первый хит У него есть пара решений (как это часто бывает в Perl). Лучше всего использовать Text :: CSV, так как он делает всю работу за вас. Снова обратитесь к документации по metacpan для получения более подробной информации.
# Object interface
use Text::CSV;
my @rows;
# Read/parse CSV
my $csv = Text::CSV->new ({ binary => 1, auto_diag => 1 });
open my $fh, "<:encoding(utf8)", "test.csv" or die "test.csv: $!";
while (my $row = $csv->getline ($fh)) {
$row->[2] =~ m/pattern/ or next; # 3rd field should match
push @rows, $row;
}
close $fh;
Конечно, это не совсем то, что вы хотите, но это хорошее начало.
Теперь вам нужно перебрать каждую строку, взять каждый столбец и записать это в файл Excel. Я предполагаю, что вы знаете, как перебирать список. Приведенный выше пример уже делает это. Что нам нужно сделать именно это:
- для каждой строки в файле CSV
- принять значение каждого столбца файла CSV ...
- ... и поместите его в соответствующий столбец в вашем файле Excel
- сохранить файл Excel
Если у вас сейчас есть проблемы с этими шагами, вы можете искать более конкретные проблемы.
Многие модули Perl поставляются с примерами. Если вы посмотрите на выпуск в metacpan, вы увидите, что есть немало для Excel :: Writer :: XLSX . Нажмите на название модуля, чтобы перейти на страницу распространения, и прокрутите вниз.
Text :: CSV также содержит похожие примеры.