本帖最后由 cnergao 于 2013-2-14 11:53 编辑
国家 简介
中国 语言:<strong>汉字<br /></strong>
美国 语言:<strong>美式英语<br /></strong>
日本 语言:<strong>日语<br /></strong>
俄罗斯 语言:<strong>俄语<br /></strong>
英国 语言:<strong>英语<br /></strong>
德国 语言:<strong>德语<br /></strong>
以上是两列excel表格的内容。
我现要想要做的是把简介这列表格中“<strong>汉字<br /></strong>"内“汉字”等文字替换成“国家”列中的文字内容
即变成下面的
国家 简介
中国 语言:<strong>中国<br /></strong>
美国 语言:<strong>美国<br /></strong>
日本 语言:<strong>日本<br /></strong>
俄罗斯 语言:<strong>俄罗斯<br /></strong>
英国 语言:<strong>英国<br /></strong>
德国 语言:<strong>德国<br /></strong>#include <Excel.au3>
Local $aArray2,$aArray1
$sFilePath1 = "D:\AUTOIT_3.3.7.15.1\Test.xls" ;该文件应该已存在
$oExcel = _ExcelBookOpen($sFilePath1)
$I=$oExcel.ActiveSheet.Range("A65535").End(-4162).Row;读取单元格数
$aArray1 = _ExcelReadArray($oExcel, 2, 1, $I-1, 1) ;从活动工作表的行或列创建一个数组垂直方向
$aArray2 = _ExcelReadArray($oExcel, 2, 2, $I-1, 1)
$Y=0
do
_ExcelWriteCell($oExcel,StringRegExpReplace($aArray2[$Y], '<(?i)strong>(.*?)<(?i)b', '<strong>'&$aArray1[$Y]&'<b'),$Y+1,2)
$Y=$Y+1
until $Y=$I-1
以上只是简单的几条数据,实际有几千上万条数据。我的思路是要全部读取替换完保存到数组再写回单元格。但是数组操作出错,怎么把DO until 这段改成数组写回单元格?
以上程序改成数组方式写入示例#include <Excel.au3>
#include <Array.au3>
Local $I, $Y, $result, $aArray2,$aArray1
$sFilePath1 = "D:\AUTOIT_3.3.7.15.1\Test.xls" ;该文件应该已存在
$oExcel = _ExcelBookOpen($sFilePath1)
$I=$oExcel.ActiveSheet.Range("A65535").End(-4162).Row;读取列表有效单元格数
$aArray1 = _ExcelReadArray($oExcel, 2, 1, $I-1, 1) ;从活动工作表的行或列创建一个数组垂直方向
$aArray2 = _ExcelReadArray($oExcel, 2, 2, $I-1, 1)
Dim $array[$I-1];定义数组做为保存替换用
$Y=0
do
$array[$Y]=StringRegExpReplace($aArray2[$Y], '<(?i)strong>(.*?)<(?i)b', '<strong>'&$aArray1[$Y]&'<b');保存正则替换的数组
$Y=$Y+1
Until $y=$I-1
_ExcelWriteArray($oExcel,2,2,$array,1,0);写入数组
之前因为数组的定义问题。一直写入出错。请大家看看还有什么需要改进,这个数组的定义还有其他方法没? |