Обмін даними між mysql і microsoft excel

завдання
Ви хочете здійснювати обмін інформацією між MySQL і Excel.

Рішення
Використовуйте такі утиліти, як DBTools і MySQLFront. Або застосуєте модулі Perl, які читають і записують файли електронних таблиць Excel, для створення власних утиліт передачі даних.

• Модуль Spreadsheet :: ParseExcel :: Simple надає зручний інтерфейс для читання таблиць Excel.

• Модуль Spreadsheet :: WriteExcel :: Simple дозволяє створювати файли у форматі електронних таблиць Excel.

Ці модулі доступні в Perl CPAN. (Вони фактично є зовнішніми інтерфейсами до інших модулів, які також потрібно буде попередньо встановити.) Після установки модулів для звернення до їх документації використовуйте такі команди:

% Perldoc Spreadsheet :: ParseExcel :: Simple
% Perldoc Spreadsheet :: WriteExcel :: Simple

Ці модулі значно спрощують написання двох невеликих сценаріїв (наведених нижче) для перетворення електронних таблиць в формат з роздільниками-символами табуляції і назад.


Використовуючи ці сценарії в поєднанні з прийомами імпорту та експорту даних MySQL, ви зможете переміщати вміст електронних таблиць в таблиці MySQL і навпаки.

Можна застосовувати їх «як є» або адаптувати до вашим конкретним вимогам.

Сценарій from_excel.pl читає електронні таблиці Excel та перетворює їх в формат значень, розділених символами табуляції:

#! / Usr / bin / perl -w
# From_excel.pl - читає електронну таблицю Excel, записує
# В стандартний висновок в форматі: символи табуляції,
# Символ перекладу рядка - ознака кінця рядка.
use strict;
use Spreadsheet :: ParseExcel :: Simple;
@ARGV or die "Usage: $ 0 excel-file \ n";
my $ xls = Spreadsheet :: ParseExcel :: Simple-> read ($ ARGV [0]);
foreach my $ sheet ($ xls-> sheets ())
while ($ sheet-> has_data ())
my @data = $ sheet-> next_row ();
print join ( "\ t", @data). "\ N";
>
>
exit (0);

Сценарій to_excel.pl виконує зворотну операцію читання файлу з роздільниками-табуляціями і записує його в форматі Excel:

Сценарій to_excel.pl приймає введення в форматі значень, розділених символами табуляції, з символом переведення рядка в якості ознаки кінця рядка.


Для того щоб він міг працювати з файлами в іншому форматі, використовуйте його в поєднанні з cvt_file.pl.

Ще один пов'язаний з Excel модуль Perl, Spreadsheet :: WriteExcel :: FromDB, читає дані з таблиці, використовуючи з'єднання DBI, і записує їх у форматі Excel. Розглянемо невеликий сценарій, який експортує таблицю MySQL у вигляді електронної таблиці Excel:

#! / Usr / bin / perl -w
# Mysql_to_excel.pl - отримавши імена бази даних і таблиці,
# Вивантажує таблицю в стандартний висновок в форматі Excel.
use strict;
use DBI;
use Spreadsheet :: ParseExcel :: Simple;
use Spreadsheet :: WriteExcel :: FromDB;
#. обробка опцій командного рядка (не наводиться).
@ARGV == 2 or die "Usage: $ 0 [options] db_name tbl_name \ n";
my $ db_name = shift (@ARGV);
my $ tbl_name = shift (@ARGV);
#. з'єднання з базою даних (не наводиться).
my $ ss = Spreadsheet :: WriteExcel :: FromDB-> read ($ dbh, $ tbl_name);
print $ ss-> as_xls ();
exit (0);

Всі три утиліти виводять результат в стандартний висновок, звідки його можна перенаправити, наприклад, в файл:

% From_excel.pl data.xls> data.txt
% To_excel.pl data.txt> data.xls
% Mysql_to_excel.pl cookbook profile> profile.xls.

Схожі статті