Здравствуйте!
Встретился интересный и нужный мне сейчас скрипт по выбору значений из файлов excel
Вот такой скрипт (где находил - не помню)
Теперь, знатоки, внимание - вопрос! Можно ли что то подобное реализовать для машины, не имеющей на борту установленного excel ( или имеющей портативный excel)
Спасибо за внимание!
Встретился интересный и нужный мне сейчас скрипт по выбору значений из файлов excel
Вот такой скрипт (где находил - не помню)
Код:
; CopyXlsInText.au3
; ================ Описание ===================================
; Копирование из файлов XLS, XLSX строк, столбцов в текстовый файл
; ================ Параметры ===================================
; В командной строке должно быть прописано 7 - 11 параметров:
; - - - - - - - - - - - - - - - - - Обязательные - - - - - - - - - - - - - - - - - - - -
; 1) Номер листа с какого считывать информацию
; 2) С какой строки начать считывание
; 3) С какого столбца начать считывание
; 4) К-во считываемых рядов (строк) (0 - все)
; 5) К-во считываемых колонок (столбцов)
; 6) Путь\к\файлу.xls
; 7) Путь\к\сохранению\файла.txt
; (можно вводить пути с переменными окружения)
; - - - - - - - - - - - - - - - Дополнительные - - - - - - - - - - - - - - - - - - - -
; 8) 1 = Удалять пустые строки 0 = оставить как есть
; 9) строка-вставка между колонками
; 10) строка-вставка в начале строки
; 11) строка-вставка в конце строки
; ================ Примеры ===================================
; 1 2 0 4 "%%COMMANDER_PATH%%\Files\Lists\CreateMenu\WcmMenuImage.xlsx" "%%COMMANDER_PATH%%\Text.ini"
; 1 2 0 4 "%%COMMANDER_PATH%%\Files\Lists\CreateMenu\WcmMenuImage.xlsx" "%%COMMANDER_PATH%%\Text.ini" 1 "___" "| " " |"
; 1 1 1 0 0 %P%N "%T%O.txt" 1 " " Копирование первого листа из xls под курсором в текстовый файл в соседнюю панель
; ; Автор: Аверин Андрей
; Версия: 1.0 (12.10.2010)
; Mail: [email protected]
; Site: http://tc-image.3dn.ru/forum/3-83-329-16-1330565367
; ===============================================================
#include <Excel.au3>
If $CmdLine[0] < 7 Then
MsgBox(16 + 262144, "Запись из табличного файла строк и столбцов в файл", _ "Не хватает параметров!" & @CRLF & "Должно быть минимум СЕМЬ, а у вас" & _
$CmdLine[0] & @CRLF & "Пропишите и повторите попытку!" & @CRLF & _
"Подробную информацию читайте в коментариях скрипта", 10)
Exit
Endif
$List = Number($CmdLine[1])
$StartRow = Number($CmdLine[2])
$StartCol = Number($CmdLine[3])
$RowCnt = Number($CmdLine[4])
$ColCnt = Number($CmdLine[5])
$XlsFile = _TCHExpandEnv($CmdLine[6])
$TxtFile = _TCHExpandEnv($CmdLine[7])
$Text = ""
$Insert = ""
$Control = ""
$Contr = 0
$InsertRight = ""
$InsertLeft = ""
if $CmdLine[0] > 7 Then $Contr = $CmdLine[8]
if $CmdLine[0] > 8 Then $Insert = $CmdLine[9]
if $CmdLine[0] > 9 Then $InsertRight = $CmdLine[10]
if $CmdLine[0] > 10 Then $InsertLeft = $CmdLine[11]
; Открываем xls , считываем нужные строки, колонки и закрываем
$oInFile = _ExcelBookOpen($XlsFile, 0, True)
; номер листа
$oInFile.Sheets($List).Select()
$aData = _ExcelReadSheetToArray($oInFile, $StartRow, $StartCol, $RowCnt , $ColCnt)
_ExcelBookClose($oInFile, 0)
if $RowCnt = 0 Then $RowCnt = UBound($aData,1) - 1
;размерность массива (к-во строк)
if $ColCnt = 0 Then $ColCnt = UBound($aData,2) - 1
;размерность массива (к-во колонок)
; Открываем выходной файл для записи - с очисткой
$hFile = FileOpen($TxtFile, 2)
; Записываем данные
For $i=1 To $RowCnt
For $j=1 To $ColCnt
if $aData[$i][$j] = "" Then $aData[$i][$j] = ""
$Text = $Text & StringFormat("%s", $aData[$i][$j]) & $Insert $Control = $Control & $Insert
Next
; проверка на пустые строки
if $Contr = 1 And StringCompare($Control, $Text,2) = 0 Then
Else
FileWriteLine($hFile, $InsertLeft & $Text & $InsertRight)
Endif
$Text = ""
$Control = ""
Next
; функция разворачивания переменных окружения
Func _TCHExpandEnv($sText)
$aResult = StringRegExp($sText, "%(\w+)%", 3)
If IsArray($aResult) Then
For $i = 0 To UBound($aResult)-1
$sText = StringReplace($sText, "%" & $aResult[$i] & "%", EnvGet($aResult[$i]))
Next
EndIf
Return $sText
EndFunc
Теперь, знатоки, внимание - вопрос! Можно ли что то подобное реализовать для машины, не имеющей на борту установленного excel ( или имеющей портативный excel)
Спасибо за внимание!