找回密码
 加入
搜索
查看: 6767|回复: 13

[系统综合] (已解决)正则输出到excel内容顺序跟在_ArrayDisplay中显示相同的问题

  [复制链接]
发表于 2011-4-30 01:38:14 | 显示全部楼层 |阅读模式
本帖最后由 xiezhang6263 于 2011-4-30 15:58 编辑
#include <Excel.au3>
#include <array.au3>
#include <INet.au3>
$urlsource=_INetGetSource ( "http://www.it-hztc.com/product.asp?tid=452" )
If Not @error Then
        $str=StringRegExp($urlsource,'\<A.*\>(.*?)(?=\<\/A\>)',3)   
                        _ArrayDisplay($str)
EndIf

$sFilePath1 = @ScriptDir & "\test.xls" 
$oExcel = _ExcelBookOpen($sFilePath1)

If @error = 1 Then
    MsgBox(0, "错误!", "无法创建对象!")
    Exit
ElseIf @error = 2 Then
    MsgBox(0, "错误!", "文件不存在!")
    Exit
EndIf

_ExcelWriteCell($oExcel, $str, 5, 2)     ;这里想输出“首页”
_ExcelWriteCell($oExcel, $str, 6, 2)     ;这里想输出“戴尔 ST2420L(LED屏 DVI HDMI VGA)”
_ExcelWriteCell($oExcel, $str, 7, 2)     ;这里想输出“戴尔 ST2310WA(PVA面板 DVI HDMI VGA)”
_ExcelWriteCell($oExcel, $str, 8, 2)     ;与array上输出的内容顺序相同,以此类推
_ExcelWriteFormula($oExcel, "=now()", 1, 1)       ;把这个当前时间公式转为文字输出
后面注释部分是我碰到的问题,希望有人可以帮我解决这个问题。
 楼主| 发表于 2011-4-30 13:03:55 | 显示全部楼层
时间公式已解决
$shijian = @YEAR&"年"&@MON&"月"&@MDAY&"日"& @HOUR & "时"& @MIN & "分"& @SEC & "秒"
_ExcelWritecell($oExcel, $shijian, 1, 1) ;把这个当前时间公式转为文字输出
发表于 2011-4-30 13:10:54 | 显示全部楼层
借贴问问题:
_ExcelWriteCell($oExcel, $str, 8, 2)
里面.$str是一个字符串变量还是一个数组?
里面的8和2是什么意思?
 楼主| 发表于 2011-4-30 13:57:55 | 显示全部楼层
$str是用正则提取出来的内容
上面的用_ArrayToClip($str, 0,1)
然后逐个写到excel里面
可以解决问题了
8和2是单元格的位置B8单元格,在b8单元格里写入正则提取的内容。
 楼主| 发表于 2011-4-30 13:58:14 | 显示全部楼层
回复 3# easefull
$str是用正则提取出来的内容
上面的用_ArrayToClip($str, 0,1)
然后逐个写到excel里面
可以解决问题了
8和2是单元格的位置B8单元格,在b8单元格里写入正则提取的内容。
发表于 2011-4-30 14:02:50 | 显示全部楼层
回复 5# xiezhang6263

又学到了一些,谢谢.
 楼主| 发表于 2011-4-30 14:21:04 | 显示全部楼层
本帖最后由 xiezhang6263 于 2011-4-30 14:23 编辑

回复 6# easefull
#include <Excel.au3>
#include <array.au3>
#include <INet.au3>
$urlsource=_INetGetSource ( "http://www.it-hztc.com/product.asp?tid=452" )
If Not @error Then
        $str=StringRegExp($urlsource,'\<A.*\>(.*?)(?=\<\/A\>)',3)   
                        _ArrayDisplay($str)
EndIf

$sFilePath1 = @ScriptDir & "\test.xls" ;在该文件夹新建一个test.xls
$oExcel = _ExcelBookOpen($sFilePath1)

If @error = 1 Then
    MsgBox(0, "错误!", "无法创建对象!")
    Exit
ElseIf @error = 2 Then
    MsgBox(0, "错误!", "文件不存在!")
    Exit
EndIf
_ArrayToClip($str, 0,0)
_ExcelWriteCell($oExcel, ClipGet(), 5, 2);这里输出查找到的第一个“首页”
 _ArrayToClip($str, 1,1)
_ExcelWriteCell($oExcel, ClipGet(), 6, 2);这里输出查找到的第二个“戴尔 ST2420L(LED屏 DVI HDMI VGA)
_ArrayToClip($str, 2,2)
_ExcelWriteCell($oExcel, ClipGet(), 7, 2);显示下条内容
_ArrayToClip($str, 3,3)
_ExcelWriteCell($oExcel, ClipGet(), 8, 2);显示下条内容
$shijian = @YEAR&"/"&@MON&"/"&@MDAY&" "& @HOUR & ":"& @MIN & ""
 
_ExcelWriteFormula($oExcel, $shijian, 1, 1) ;把这个当前时间公式转为文字输出
现在下面的都可以了,就首页这条不知道如何写才好,
_ArrayToClip($str, 0,0)
是读完所有的内容,而不是我想要的首页。看能不能解决。
发表于 2011-4-30 15:08:01 | 显示全部楼层
回复 7# xiezhang6263

我觉得不应该用_ArrayToClip
$str本身就是一个字符串数组.直接把数组里面的元素写进要应的execl表格应该就可以了.
另外,在execl里面好像是不能用回车的?
我把代码改成这样子,你看一下.
#include <Excel.au3>
#include <array.au3>
#include <INet.au3>
$urlsource=_INetGetSource ( "http://www.it-hztc.com/product.asp?tid=452" )
If Not @error Then
        $str=StringRegExp($urlsource,'\<A.*\>(.*?)(?=\<\/A\>)',3)   
        _ArrayDisplay($str)
Else
        MsgBox(0, "错误!", "信息获取失败!")
        Exit
EndIf

$sFilePath1 = @ScriptDir & "\test.xls" ;在该文件夹新建一个test.xls
$oExcel = _ExcelBookOpen($sFilePath1)
If @error = 1 Then
    MsgBox(0, "错误!", "无法创建对象!")
    Exit
ElseIf @error = 2 Then
    MsgBox(0, "错误!", "文件不存在!")
    Exit
EndIf

For $i = 0 To UBound($str) - 1 Step 1
        _ExcelWriteCell($oExcel, $str[$i], $i + 1, 2)
Next
$shijian = @YEAR&"/"&@MON&"/"&@MDAY&" "& @HOUR & ":"& @MIN & ""
MsgBox(0, "", $shijian)
_ExcelWriteFormula($oExcel, $shijian, 1, 1)
 楼主| 发表于 2011-4-30 15:26:22 | 显示全部楼层
回复 8# easefull
还是有个问题想问下,要是我只想读写“首页”这个怎么弄呢?呵呵,你上面这个很强悍,学习了。
发表于 2011-4-30 15:58:19 | 显示全部楼层
回复 9# xiezhang6263

不太理解你说的"首页"是什么意思.
是不是只读写B1那一栏?
 楼主| 发表于 2011-4-30 15:58:34 | 显示全部楼层
回复 8# easefull
问题已解决,谢谢。
发表于 2011-11-1 11:59:08 | 显示全部楼层
谢谢楼主提供好源码
发表于 2013-6-28 13:07:21 | 显示全部楼层
當出現arraydisplay視窗後, 想要自動切換到某個其他的視窗做按一個按紐的動作, 可以實現嗎?
因為我最後出現arraydisplay視窗後, 想下其他動作, 但一定要關閉arraydisplay視窗它才會做接下來的動作..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 01:18 , Processed in 0.099058 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表