mysql导出脚本自动生成word 数据字段perl工具
来源:互联网 发布:打不开网络共享文件夹 编辑:程序博客网 时间:2024/05/22 02:26
#!perl -w
use strict;
use utf8;
use open ':encoding(gbk)', ':std';
use open ':encoding(utf8)';
use Win32::OLE;
use Win32::OLE::Const 'Microsoft.Word'; # wd constants
my $word = Win32::OLE->new("Word.Application");
$word->{Visible} = 1;
my $document = $word->Documents->Add;
my $selection = $word->Selection;
my %thistablecolumns = ();
my %thistablerefrecords = ();
&main();
sub PrintTableinfo(){
my ($tablename) = @_;
my ($columnname,$columntype);
#-----------------------------
print ("$tablename \n");
my @columnname = keys %thistablecolumns;
print @columnname;
@columnname = sort { $a cmp $b } @columnname ;
print @columnname;
while(($columnname,$columntype) = each(%thistablecolumns)) {
print ("$columnname,$columntype");
my $columndesc = "";
if(exists $thistablerefrecords{$columnname}){
$columndesc = $thistablerefrecords{$columnname};
}
print ("$columndesc\n");
}
$selection->Font->{size} = 20;
$selection->TypeText("tablename : $tablename \n");
$selection->Font->{size} = 10;
$selection->TypeText("mark:");
my $Range = $document->ActiveWindow->Selection->{Range};
my $rownum = keys %thistablecolumns;
$rownum ++;
my $table = make_table( $document, $Range,$rownum,3);
$table->Columns(2)->{Width} = '50';
$document->ActiveWindow->Selection->EndKey( { unit => wdStory } );
enter($document);
$table->cell( 1, 1 )->Range->InsertAfter("fieldname");
$table->cell( 1, 2 )->Range->InsertAfter("fieldtype");
$table->cell( 1, 3 )->Range->InsertAfter("desc");
my $rowindex = 2;
foreach $columnname (@columnname) {
$columntype = $thistablecolumns{$columnname};
my $columndesc = "";
if(exists $thistablerefrecords{$columnname}){
$columndesc = $thistablerefrecords{$columnname};
}
print (" row : $rowindex\n");
$table->cell( $rowindex, 1 )->Range->InsertAfter($columnname);
$table->cell( $rowindex, 2 )->Range->InsertAfter($columntype);
$table->cell( $rowindex, 3 )->Range->InsertAfter($columndesc);
$rowindex++;
}
}
sub main(){
my $line ;
my $tablename = "";
my $tablecontext = 0;
my %tableref = ();
while($line = <>){
#print $line;
if ($line =~ /CREATE TABLE\s+(\w+)/){
$tablename = $1;
$tablecontext = 1;
next;
}elsif ($line =~ /ENGINE=InnoDB/){
&PrintTableinfo($tablename);
$tablename = "";
$tablecontext = 0;
%thistablecolumns = ();
%thistablerefrecords = ();
next;
}
if ($tablecontext == 1){
# print $line;
&ParseTableDesc($line);
}
}
$document->SaveAs('E:/ffpsdatadic.doc');
$document->close;
$word->quit;
}
sub ParseTableDesc(){
my ($line) = @_;
if ($line =~ /^\s*PRIMARY KEY/ || $line =~ /^\s*KEY/ ){
return;
}elsif ($line =~ /FOREIGN\s+KEY\s+\((\w+)\)\s+REFERENCES\s+(\w+)\s+\((\w+)\)/){
my $columnname = $1;
my $reftable = $2;
my $refcolumnname = $3;
$thistablerefrecords{$columnname} = "refkey : ${reftable} -- ${refcolumnname}"
}elsif ($line =~ /^\s*(\w+)\s+(\w+)/){
my $columnname = $1;
my $columntype = $2;
$thistablecolumns{$columnname} = $columntype;
}
return;
}
sub make_table {
my ( $document, $Range ,$cols,$rows) = @_;
my $objTa = $document->Tables->Add( $Range, $cols, $rows );
#$objTa->Columns(1)->{Width} = '5';
$objTa->Borders->{InsideLineStyle} = wdLineStyleSingle;
$objTa->Borders->{OutsideLineStyle} = wdLineStyleSingle;
#$objTa->Cell( 1, 1 )->Merge( { MergeTo => $objTa->Cell( 3, 1 ) } );
return $objTa;
}
sub enter {
my $document = shift;
$document->ActiveWindow->Selection->TypeParagraph;
}
use strict;
use utf8;
use open ':encoding(gbk)', ':std';
use open ':encoding(utf8)';
use Win32::OLE;
use Win32::OLE::Const 'Microsoft.Word'; # wd constants
my $word = Win32::OLE->new("Word.Application");
$word->{Visible} = 1;
my $document = $word->Documents->Add;
my $selection = $word->Selection;
my %thistablecolumns = ();
my %thistablerefrecords = ();
&main();
sub PrintTableinfo(){
my ($tablename) = @_;
my ($columnname,$columntype);
#-----------------------------
print ("$tablename \n");
my @columnname = keys %thistablecolumns;
print @columnname;
@columnname = sort { $a cmp $b } @columnname ;
print @columnname;
while(($columnname,$columntype) = each(%thistablecolumns)) {
print ("$columnname,$columntype");
my $columndesc = "";
if(exists $thistablerefrecords{$columnname}){
$columndesc = $thistablerefrecords{$columnname};
}
print ("$columndesc\n");
}
$selection->Font->{size} = 20;
$selection->TypeText("tablename : $tablename \n");
$selection->Font->{size} = 10;
$selection->TypeText("mark:");
my $Range = $document->ActiveWindow->Selection->{Range};
my $rownum = keys %thistablecolumns;
$rownum ++;
my $table = make_table( $document, $Range,$rownum,3);
$table->Columns(2)->{Width} = '50';
$document->ActiveWindow->Selection->EndKey( { unit => wdStory } );
enter($document);
$table->cell( 1, 1 )->Range->InsertAfter("fieldname");
$table->cell( 1, 2 )->Range->InsertAfter("fieldtype");
$table->cell( 1, 3 )->Range->InsertAfter("desc");
my $rowindex = 2;
foreach $columnname (@columnname) {
$columntype = $thistablecolumns{$columnname};
my $columndesc = "";
if(exists $thistablerefrecords{$columnname}){
$columndesc = $thistablerefrecords{$columnname};
}
print (" row : $rowindex\n");
$table->cell( $rowindex, 1 )->Range->InsertAfter($columnname);
$table->cell( $rowindex, 2 )->Range->InsertAfter($columntype);
$table->cell( $rowindex, 3 )->Range->InsertAfter($columndesc);
$rowindex++;
}
}
sub main(){
my $line ;
my $tablename = "";
my $tablecontext = 0;
my %tableref = ();
while($line = <>){
#print $line;
if ($line =~ /CREATE TABLE\s+(\w+)/){
$tablename = $1;
$tablecontext = 1;
next;
}elsif ($line =~ /ENGINE=InnoDB/){
&PrintTableinfo($tablename);
$tablename = "";
$tablecontext = 0;
%thistablecolumns = ();
%thistablerefrecords = ();
next;
}
if ($tablecontext == 1){
# print $line;
&ParseTableDesc($line);
}
}
$document->SaveAs('E:/ffpsdatadic.doc');
$document->close;
$word->quit;
}
sub ParseTableDesc(){
my ($line) = @_;
if ($line =~ /^\s*PRIMARY KEY/ || $line =~ /^\s*KEY/ ){
return;
}elsif ($line =~ /FOREIGN\s+KEY\s+\((\w+)\)\s+REFERENCES\s+(\w+)\s+\((\w+)\)/){
my $columnname = $1;
my $reftable = $2;
my $refcolumnname = $3;
$thistablerefrecords{$columnname} = "refkey : ${reftable} -- ${refcolumnname}"
}elsif ($line =~ /^\s*(\w+)\s+(\w+)/){
my $columnname = $1;
my $columntype = $2;
$thistablecolumns{$columnname} = $columntype;
}
return;
}
sub make_table {
my ( $document, $Range ,$cols,$rows) = @_;
my $objTa = $document->Tables->Add( $Range, $cols, $rows );
#$objTa->Columns(1)->{Width} = '5';
$objTa->Borders->{InsideLineStyle} = wdLineStyleSingle;
$objTa->Borders->{OutsideLineStyle} = wdLineStyleSingle;
#$objTa->Cell( 1, 1 )->Merge( { MergeTo => $objTa->Cell( 3, 1 ) } );
return $objTa;
}
sub enter {
my $document = shift;
$document->ActiveWindow->Selection->TypeParagraph;
}
阅读全文
0 0
- mysql导出脚本自动生成word 数据字段perl工具
- “自动生成字段声明,对象转换属性设置"脚本工具
- 自动生成导出分区表脚本
- mysql导出指定字段数据
- 自动生成数据shell脚本
- mysql数据字典导出工具
- 把表里的数据导出生成脚本
- 关于数据库数据导出、生成脚本方法
- Python脚本---把MySQL数据库表中的数据导出生成csv格式文件
- sqlserver数据导入mysql一: 创建mysql数据库 perl脚本
- MYSql 数据库字段名称转实体字段 自动生成方法
- 自动生成Insert数据的SQL脚本
- nc 单据拓展字段 元数据导出脚本
- PHPWord 导出生成word
- 从数据库导出数据生成word或excel文档
- MySQL数据导入导出方法与工具
- MySQL数据的导出和导入工具
- MySQL数据的导出和导入工具
- 微软:用户手动安装Windows 10创作者更新有风险!
- 海信家用中央空调 聚惠五一“嗨享日”
- Google发布数字助理Assistant SDK,让更多硬件变得智能
- 【51Nod】1275 连续子段的差异 单调队列
- 华为余承东反思P10闪存门:急于表达造成不合适的回应
- mysql导出脚本自动生成word 数据字段perl工具
- 【loli的胡策】联校10.27(数学期望)
- Hibernate主键注解
- java二分查找
- Python爬虫简单常用方法
- 锂电池到底怎么才能又安全又强续航?这次研究人员用上了“冰”
- 亚马逊的机海战术?下个月或推出智能音箱新品对抗Google Home
- 百度引领AI产业增长与转型 股价长期看好
- 三星电子一季度净利暴增46%至68亿美元,为2013年以来最佳