您的位置:首页 > 其它

今天终于把字串整理的程序完成了,明天开始清明节放假咯

2012-04-01 17:28 337 查看
将res文件夹下面的所有*.r文件的字串名与中文翻译提取出来,每个.r文件对应一张sheet,本文件中的翻译存放在本sheet中。代码很乱,但是很不想改了


经理总是叫我整理字符串,这么多的字串手动拷贝肯定是不行的,VBA也不熟,每次编程都要之前的模板拿来也折腾很久,C又写不出来,好像还是perl好用一点,我要多学点perl。

#!/usr/bin/perl

use Encode;

use Spreadsheet::WriteExcel;

$dir_name = "C:\\Perl\\res\\";

opendir(DIR,$dir_name) || die "Can 't open directory $dir_name ";

@dots = readdir(DIR);

print @dots;

$files = @dots;

# 创建一个新的EXCEL文件

my $workbook = Spreadsheet::WriteExcel->new('test.xls');

# 新建一个样式

$format = $workbook->add_format(); # Add a format

$format->set_bold();#设置字体为粗体

$format->set_color('red');#设置单元格前景色为红色

$format->set_align('center');#设置单元格居中

for($index=3;$index<=$files;$index++){

$filename = @dots[$index-1];

#print $filename;

#print "\n";

#print @dots;

# 添加一个工作表

$worksheet = $workbook->add_worksheet($filename);

$name = join "","C:\\Perl\\res\\",$filename;

open(ResFile,$name) or die"open F error:$!";

$row = 0;

while(defined($line=<ResFile>))

{

@filter = split /resourcedef /,$line;#找到resourcedef 字符串切割

if(@filter == 2)

{

#@filter = split /(\s*= StringT \()|(=StringT \()/,@filter[1];#filter包涵两个字符串,取第二个字串以 = StringT \(切割

@filter = split /(\s*=\s*StringT\s*\()/,@filter[1];#filter包涵两个字符串,取第二个字串以 = StringT \(切割

#print @filter;

chomp @filter;#去掉换行符号

$line=<ResFile>;

$line=<ResFile>;

$line=<ResFile>;

$line=<ResFile>;

$_ = $line;#读取到中文行

s/^\s+"//;#去除开头的空格和制表符以及第一个引号

s/"$//;#去掉末尾的引号

#$string = join "\t",@filter[0],encode("gbk",decode("utf8",$_));#IDS与中文符号以制表符相连,显示在同一行

#print $string;

$worksheet->write($row,0, @filter[0]);

$worksheet->write($row,1, decode('GB2312', encode("gbk",decode("utf8",$_))));#编码方式不对的时候,可能输出空//同下$worksheet->write($row,0,encode("gbk",'星星'));

#$worksheet->write($row,1, encode("gbk",decode("utf8",$_)));

#$ch = join " ","",encode("gbk",decode("utf8",$_));

#$worksheet->write($row,1,"123");

$row++;

}

}

}

exit;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: