将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;