這個腳本是使用Perl生成excel xls文件的工具
依賴一些模塊
你可以在linux下使用
產生xls文件
使用方式是命令行+參數
非常方便這個腳本是使用Perl生成excel xls文件的工具
依賴一些模塊
你可以在linux下使用
產生xls文件
使用方式是命令行+參數
非常方便
#!/usr/bin/perl
#===============================
# mysql to excel
# lastmodify at
# copyright by hoowa
#=============================
use strict; #嚴格語法檢測
use DBI; #數據庫引擎
use Unicode::Map; #Unicode引擎
#use Spreadsheet::WriteExcel; #Excel報表引擎
use Spreadsheet::WriteExcel::Big; #大文件Excel報表引擎
my $hostname=
;
my $username=
user
;
my $password=
pass
;
my $dbname=
db
;
my $trans_compress=
; #任何非一的數關閉數據庫到程序間傳輸壓縮
$|=
;
my @cols=(
A:A
B:B
C:C
D:D
E:E
F:F
G:G
H:H
I:I
J:J
K:K
L:L
M:M
N:N
O:O
P:P
Q:Q
R:R
S:S
T:T
U:U
V:V
W:W
X:X
Y:Y
Z:Z
AA:A
BB:B
CC:C
DD:D
EE:E
FF:F
GG:G
HH:H
II:I
JJ:J
KK:K
LL:L
MM:M
NN:N
OO:O
PP:P
QQ:Q
RR:R
SS:S
TT:T
UU:U
VV:V
WW:W
XX:X
YY:Y
ZZ:Z
);
#解析來內容
if ($#ARGV !=
) {
print qq~syntax: my
excel
pl <writefilename>
[where expression]
~;
exit;
}
$ARGV[
]=~ s/\
//g;
warn qq~
mysql to excel
by hoowa
sun
=====================
sql: $ARGV[
]
~;
my $dbh =
DBI
>connect(
DBI:mysql:mysql_compression=$trans_compress;
database=$dbname;host=$hostname
$username
$password);
my $sth = $dbh
>prepare(
$ARGV[
]
) || die $dbh
>errstr;
my $rows = $sth
>execute() or die $sth
>errstr;
warn
rows: $rows found
\n
;
my @cols_name = @{$sth
>{
NAME
}};
if ($#cols_name > $#cols) {
print
table $ARGV[
] fields out of allow!!(max num
>
($#cols+
)
)\n
;
exit;
}
warn
write to: $ARGV[
]\n
;
#生成GB
編碼系統
my $map = Unicode::Map
>new(
gb
);
#產生報表
my $report = Spreadsheet::WriteExcel::Big
>new(
$ARGV[
]
) || die
不能生成報表文件
$!
;
#創建報表的工作表
my $sheet = $report
>add_worksheet(
data_report
);
#創建格式
my $title_style = $report
>add_format(); $title_style
>set_size(
); $title_style
>set_bold(); $title_style
>set_align(
center
);
#初始化數據指針
my $sheet_col =
;
#創建表格
for (my $i=
;$i<=$#cols_name ;$i++) {
$sheet
>set_column($cols[$i]
length($cols_name[$i])+
);
$sheet
>write_unicode($sheet_col
$i
$map
>to_unicode($cols_name[$i])
$title_style);
}
$sheet
>freeze_panes(
);#凍結行
while (my @row = $sth
>fetchrow_array) {
$sheet_col++;
for (my $i=
;$i<=$#cols_name ;$i++) {
next if ($row[$i] eq
);
$sheet
>write_unicode($sheet_col
$i
$map
>to_unicode($row[$i]));
}
}
warn
all done!!!\n
;
#結束
END {
$report
>close() if ($report);
$dbh
>disconnect();
}
From:http://tw.wingwit.com/Article/program/MySQL/201311/29477.html