Что нового

Очистить значение ячейки Excel от посторонних символов оставив одни цифры.

valdur2000

Знающий
Сообщения
155
Репутация
7
Код:
#include <Excel.au3>
$File =  FileOpenDialog("","C:\AutoIt","Excel(*.xlsx)")
$oExcel = _ExcelBookOpen($File,0)
_ExcelSheetActivate($oExcel,1)
$a = _ExcelReadCell($oExcel,1,1)
$a = StringRegExpReplace($a, '[^\d]', '')
IsNumber($a)
MsgBox(0,"error",@error & @CRLF & "'" & $a & "'")



Вопрос: почему $a, после очистки регуляркой, не является числом?
в аттаче xlsx с таблицей, в ней одна единственная ячейка А1.
 

sngr

AutoIT Гуру
Сообщения
1,015
Репутация
411
Не трудно догадатся или прочитать справку - StringRegExpReplace возращает строку. Ты не можешь сделать Number($a)?
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
Не трудно догадатся или прочитать справку - StringRegExpReplace возращает строку. Ты не можешь сделать Number($a)?

Т.е. $а надо потом форматнуть в число?
Код:
#include <Excel.au3>
$File =  FileOpenDialog("","C:\AutoIt","Excel(*.xlsx)")
$oExcel = _ExcelBookOpen($File,0)
_ExcelSheetActivate($oExcel,1)
$a = _ExcelReadCell($oExcel,1,1)
$a = StringRegExpReplace($a, '[^\d]', '')
$a = Number($a)
IsNumber($a)
MsgBox(0,"error",@error & @CRLF & "'" & $a & "'")


тот же результат. проблема с числом, которое написано в A1. на вид число, но не число....
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
valdur2000,
С Вашим файлом (у меня):
Код:
#include <Excel.au3>

$oExcel = _ExcelBookOpen(@ScriptDir & '\1.xlsx')
_ExcelSheetActivate($oExcel, 1)
$vValue = _ExcelReadCell($oExcel, 1, 1)
ConsoleWrite('>' & $vValue & '<' & @LF)
$vValue = StringRegExpReplace($vValue, '[^\d]', '')
ConsoleWrite('>' & $vValue & '< --> ' & VarGetType($vValue) & @LF)
$vValue = Number($vValue)
ConsoleWrite('>' & $vValue & '< --> ' & VarGetType($vValue) & @LF)
В консоли:
>004555195902
<
>004555195902< --> String
>4555195902< --> Int64
Как Вы получаете это значение в ячейку? Последний символ после цифр @CR.
 
Верх