wangchao.org
发布产品 | 发表软文 | 添加收藏 | 博客
 
购物汽车家饰IT业界自然风光女性王朝网络攻略首饰商城编程空间科普
 
互联网 | 美容 | 母婴 | 健康 | 旅游 | 娱乐 | 下载 | 美食 | 旅游 | 养生 | 手机 | 数码 | 汽车 | 珠宝 | 美容 | 装修 | 厨房 | 科普 | 动物 | 植物 | 百科 | 知道 | 词典
  
 您好! 您现在位于: 王朝网络 → 编程设计 → 《从MySQL中导出XLS数据库工具返回上一页 
 
1楼 

从MySQL中导出XLS数据库工具

  这个脚本是使用Perl生成excel xls文件的工具。依赖一些模块,你可以在linux下使用,产生xls文件。使用方式是命令行+参数。非常方便。
  #!/usr/bin/perl
  #===============================
  # mysql to excel
  # lastmodify at 2005-1-5
  # copyright by hoowa
  #=============================
  use strict; #严格语法检测
  use DBI; #数据库引擎
  use Unicode::Map; #Unicode引擎
  #use Spreadsheet::WriteExcel; #Excel报表引擎
  use Spreadsheet::WriteExcel::Big; #大文件Excel报表引擎
  my $hostname='192.168.1.133';
  my $username='user';
  my $password='pass';
  my $dbname='db';
  my $trans_compress=1; #任何非一的数关闭数据库到程序间传输压缩
  $|=1;
  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 != '1') {
  print qq~syntax: my2excel.pl "[where expression]"
  ~;
  exit;
  }
  $ARGV[1]=~ s/\"//g;
  warn qq~
  mysql to excel
  by hoowa.sun
  =====================
  sql: $ARGV[1]
  ~;
  my $dbh =
  DBI->connect("DBI:mysql:mysql_compression=$trans_compress;
  database=$dbname;host=$hostname",$username,$password);
  my $sth = $dbh->prepare("$ARGV[1]") || 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[1] fields out of allow!!(max num. > ".($#cols+1).")\n";
  exit;
  }
  warn "write to: $ARGV[0]\n";
  #生成GB2312编码系统
  my $map = Unicode::Map->new("gb2312");
  #产生报表
  my $report = Spreadsheet::WriteExcel::Big->new("$ARGV[0]") || die "不能生成报表文件:$!";
  #创建报表的工作表
  my $sheet = $report->add_worksheet('data_report');
  #创建格式
  my $title_style = $report->add_format(); $title_style->set_size(11); $title_style->set_bold(); $title_style->set_align('center');
  #初始化数据指针
  my $sheet_col = 0;
  #创建表格
  for (my $i=0;$i<=$#cols_name ;$i++) {
  $sheet->set_column($cols[$i], length($cols_name[$i])+4);
  $sheet->write_unicode($sheet_col,$i,$map->to_unicode($cols_name[$i]),$title_style);
  }
  $sheet->freeze_panes(1, 0);#冻结行
  while (my @row = $sth->fetchrow_array) {
  $sheet_col++;
  for (my $i=0;$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();
  }

这个脚本是使用Perl生成excel xls文件的工具。依赖一些模块,你可以在linux下使用,产生xls文件。使用方式是命令行+参数。非常方便。 #!/usr/bin/perl #=============================== # mysql to excel # lastmodify at 2005-1-5 # copyright by hoowa #============================= use strict; #严格语法检测 use DBI; #数据库引擎 use Unicode::Map; #Unicode引擎 #use Spreadsheet::WriteExcel; #Excel报表引擎 use Spreadsheet::WriteExcel::Big; #大文件Excel报表引擎 my $hostname='192.168.1.133'; my $username='user'; my $password='pass'; my $dbname='db'; my $trans_compress=1; #任何非一的数关闭数据库到程序间传输压缩 $|=1; 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 != '1') { print qq~syntax: my2excel.pl "[where expression]" ~; exit; } $ARGV[1]=~ s/\"//g; warn qq~ mysql to excel by hoowa.sun ===================== sql: $ARGV[1] ~; my $dbh = DBI->connect("DBI:mysql:mysql_compression=$trans_compress; database=$dbname;host=$hostname",$username,$password); my $sth = $dbh->prepare("$ARGV[1]") || 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[1] fields out of allow!!(max num. > ".($#cols+1).")\n"; exit; } warn "write to: $ARGV[0]\n"; #生成GB2312编码系统 my $map = Unicode::Map->new("gb2312"); #产生报表 my $report = Spreadsheet::WriteExcel::Big->new("$ARGV[0]") || die "不能生成报表文件:$!"; #创建报表的工作表 my $sheet = $report->add_worksheet('data_report'); #创建格式 my $title_style = $report->add_format(); $title_style->set_size(11); $title_style->set_bold(); $title_style->set_align('center'); #初始化数据指针 my $sheet_col = 0; #创建表格 for (my $i=0;$i<=$#cols_name ;$i++) { $sheet->set_column($cols[$i], length($cols_name[$i])+4); $sheet->write_unicode($sheet_col,$i,$map->to_unicode($cols_name[$i]),$title_style); } $sheet->freeze_panes(1, 0);#冻结行 while (my @row = $sth->fetchrow_array) { $sheet_col++; for (my $i=0;$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(); }

 
标签: MySQL  XLS  导出  工具  数据  
 
您可以将本页贴到其他网站
UBB代码HTML代码
 
 
 
 
 
 更多内容
 ·实现win2003下mysql数据库每天自 ·Mysql数据库的索引分析和优化 ·Perl操作Mysql数据库 ·用perl访问mysql数据库
 ·ASP链接MYSQL并读取数据的程序 ·Asp建立MYSQL数据库的连接 ·ASP如何使用MYSQL数据库 ·ASP使用MYSQL数据库全攻略
 ·Win2000上安装PHP+MYSQL(IIS版) ·win2k平台下mysql的默认设置的脆 ·sol9_x86+apache+mysql+php+disc ·Solaris9_x86+Apache2+Mysql
 ·Solaris 9.0 for x86 安装 Apach ·Apache-2.0.45+php-4.3.1+mysql- ·mysql 源代码编译安装之sql_lex. ·配合QMAIL邮件系统:SOLARIS + H
 ·在SCO UNIX OperServer 5.0.6 系 ·apache+mysql+php+ssl服务器之完 ·构建Apache+PHP4+MySQL+PGSQL fo ·Linux下APACHE&PHP&MYSQL&CGI修改
 ·忘了MySQL的管理员密码怎么办 ·在Linux下安装和使用MySQL ·apache+php+mysql ·安装MySQL(UNIX)
 
最新评论  点此查看所有评论
 
 
 
 
发表评论(支持UBB码)


验证码:  
 
 
© 2005- 王朝网络 版权所有