VBScript для AE - чтение XLS без Excel и запись красивого XML

Только один вопрос.
как сделать так, что бы если нет отклика в течении 5 сек, убивать процесс?
 
  • Спасибо
Реакции: f1ai
То что нужно!
Спасибо огромное
Сделаю пока на питоне. Потом на java с apach poi перейду
 
  • Спасибо
Реакции: f1ai
  • Спасибо
Реакции: f1ai
Можете пожалуйста выложить этот vbs код? У меня пока не выходит
Код:
 Function Main(inputs, outputFolder, params)
Dim WshShell, fso, loc, cmd, sFile, pyExe, inputFile, outFolder
Const Quote = """"
 inputFile = inputs(0)
 WScript.Echo(Recode("Входящий файл XLS: " & inputFile, "cp866", "windows-1251"))
 outFolder = outputFolder
 WScript.Echo(Recode("Папка XML: " & outFolder, "cp866", "windows-1251"))

Set fso = CreateObject("Scripting.FileSystemObject")
loc = fso.GetAbsolutePathName(".")
sFile = "C:\Esko\bg_data_fastserverscrrunnt_v100\Scripts\WindowsScript\MyPyScript_ForBlankFlexo_v1.py "  & Quote & inputFile & Quote & " " & Quote & outFolder & Quote
pyExe = "C:\Python37\python.exe "
'~ cmd = "%ComSpec% /k C:\Python37\python.exe " + loc + "\Hello.py"
'cmd = pyExe & loc & sFile
WScript.Echo pyExe + sFile


Set WshShell = CreateObject("WScript.Shell")
WshShell.Run (pyExe & sFile),3,true

if WScript.Arguments.Count = 0 then
    loc = fso.GetAbsolutePathName(".")
else
    loc = WScript.Arguments(0)
end if

End function
'Функция смены кодировки для вывода кирилицы в консоль'
            Function Recode(StrText, SrcCode, DestCode)
                With CreateObject("ADODB.Stream")
                    .Type = 2
                    .Mode = 3
                    .Charset = DestCode
                    .Open
                    .WriteText (strText)
                    .Position = 0
                    .Charset = SrcCode
                    Recode = .ReadText
                    .Close
                end with
            End Function


 Dim inputs()
 Dim outputFolder
 Dim params()

 Main inputs, outputFolder, params
 Main = "OK"
 
  • Спасибо
Реакции: f1ai
Одного не смог добиться, парадачи данных из PY скрипта в VBS что бы можно было вывести в консоль шатла.
Передаётся только состояние - PY скрипт закончил работу или нет. Если закончил, VBS продолжает дальше работать.
WshShell.Run (pyExe & sFile),3,true

Если у вас получится передать информацию из PY в VBS, прошу поделиться рецептом.
 
  • Спасибо
Реакции: f1ai
Одного не смог добиться, парадачи данных из PY скрипта в VBS что бы можно было вывести в консоль шатла.
Передаётся только состояние - PY скрипт закончил работу или нет. Если закончил, VBS продолжает дальше работать.
WshShell.Run (pyExe & sFile),3,true

Если у вас получится передать информацию из PY в VBS, прошу поделиться рецептом.

Всё просто,
записать вывод во временный файл .Run(myprog.exe > f:\asd.txt, потом из него прочитать и вывести в консоль
 
Всё просто,
записать вывод во временный файл .Run(myprog.exe > f:\asd.txt, потом из него прочитать и вывести в консоль
Да, это хороший вариант использовать файл для обмена, но вдруг есть готовое решение в самом VBS.
 
Да, это хороший вариант использовать файл для обмена, но вдруг есть готовое решение в самом VBS.

Только так. 4 строчки, куда проще?

Код:
return = WshShell.Run("cmd /c C:\snmpset -c ... > c:\temp\output.txt", 0, true)

Set fso  = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("c:\temp\output.txt", 1)
text = file.ReadAll
file.Close
 
"Фирмачи" почему-то не загоняются, пишут простой скрипт пересохраняющий в CSV и далее его уже используют.
Санек, в питоне есть библиотеки позволяющие картинки из Excel сохранить, а в ячейку прописать имя файла ?
 
Есть библиотека, и не одна.
Посмотрю что там имеется по работе с картинками
 
  • Спасибо
Реакции: ACTPOHOM
Есть библиотека, и не одна.
Посмотрю что там имеется по работе с картинками

Видимо перед тем как вытаскивать все в XML надо сохранить картинки в локацию excel /images
и порядковый номер картинки поставить в ячейку типа img_001.jpg.
Потом уже парсинг.
 
Используется библиотека win32com.client
excel = win32com.client.Dispatch("Excel.Application")
Получается что PY использует эксель для работы.
Что нам не очень подходит.
Если интересно:
 
  • Спасибо
Реакции: f1ai
Код:
 Function Main(inputs, outputFolder, params)
Dim WshShell, fso, loc, cmd, sFile, pyExe, inputFile, outFolder
...

Почему нельзя нажать "Спасибо" 100 раз? Я бы нажал! :)
Я в программировании совсем новичок, пишу только на питоне и совсем чуть-чуть на js. Мечтал о возможности встроить .py в АЕ процесс уже давно.
ОГРОМНОЕ ВАМ СПАСИБО!
 
Видимо перед тем как вытаскивать все в XML надо сохранить картинки в локацию excel /images
и порядковый номер картинки поставить в ячейку типа img_001.jpg.
Потом уже парсинг.
Если xlsx можно дёрнуть все изображения по аналогии с youtube.com/watch?v=j5UW1hsj6Zw
они находятся в каталоге xl\media
 
Если xlsx можно дёрнуть все изображения по аналогии с youtube.com/watch?v=j5UW1hsj6Zw
они находятся в каталоге xl\media
Да, там не все так просто.
Если в ячейке цифра, она будет прописана в файле Sheet1.xml
<row r="1" spans="1:3" x14ac:dyDescent="0.2">
<c r="A1">
<v>111</v>
</c>
<c r="B1">
<v>222</v>
</c>
<c r="C1">
<v>333</v>
</c>
</row>

Если текст то в этой файле будет ссылка на позицию в другом файле
<row r="1" spans="1:3" x14ac:dyDescent="0.2">
<c r="A1" t="s">
<v>0</v>
</c>
<c r="B1" t="s">
<v>1</v>
</c>
<c r="C1" t="s">
<v>2</v>
</c>

вот этот файл sharedString,xml содержит в порядке <v> уже текстовые даные
<si>
<t>MamaA1</t>
</si>
<si>
<t>MamaB1</t>
</si>
<si>
<t>MamaC1</t>
</si>
<si>
<t>MamaA2</t>
</si>
<si>
<t>MamaB2</t>
</si>
<si>
<t>MamaC2</t>
</si>
 
То, что на видосе повторить легко, по сути там просто подмена одинх значений другими.
реального полного вдумчивого разбора нет.
Если данные только цифры, ок, можно сделатьсредствами АЕ.
 
Почему нельзя нажать "Спасибо" 100 раз? Я бы нажал! :)
Я в программировании совсем новичок, пишу только на питоне и совсем чуть-чуть на js. Мечтал о возможности встроить .py в АЕ процесс уже давно.
ОГРОМНОЕ ВАМ СПАСИБО!
Пользуйтесь.
 
  • Спасибо
Реакции: f1ai