#include <Array.au3>
#Include <File.au3>
#include <Excel.au3>
;########################################################################
;в этом блоке содаем файл-лист, узнаем кол-во файлов md
;узнаем необходимое количество листов в книге Excel для записи
$PathFileList = @ScriptDir&"\List.txt" ;путь к файлу List.txt
$searchMD = FileFindFirstFile(@ScriptDir&"\*.md");путь к файлам md
If $searchMD = -1 Then ;если нет md файлов, тогда
MsgBox(16, "Ошибка", "Файлы md не найдены");сообщить
Exit;и выйти
EndIf
$fileList = FileOpen($PathFileList, 10);открываем файл List.txt для записи, если отсутствует, - создать
If $fileList = -1 Then
MsgBox(16, "Ошибка", "Не удалось создать или открыть файл List.txt.")
Exit
EndIf
$n=0;счетчик фкол-ва файлов md
While 1;ищем в цикле все файлы md
$fileMD = FileFindNextFile($searchMD)
If @error Then ExitLoop;завершить цикл, т.к. все файлы найдены
FileWriteLine($fileList, $fileMD & @CRLF);и пишем их имена в файл-лист
$n=$n+1
WEnd
FileClose($searchMD)
FileClose($fileList)
MsgBox(64, "Инфо", "Всего файлов "&$n)
$numColumn = 5;лимит столбцов на один лист книги (можно 255 поставить)
$numList = 1;изначально кол-во листов для записи в книге - 1
If $n > $numColumn Then ;если файлов больше 5, тогда
$numList = Ceiling($n/$numColumn);узнаем сколько в книге листов для записи необходимо
MsgBox(64, "Инфо", "Требуется листов книги " & $numList)
EndIf
;#############################################################################
;в этом блоке пытаемся открыть книгу Excel и активировать Лист №1
$sFileXLSPath = @ScriptDir & "\AutoIt_md.xls"
$oExcel = _ExcelBookOpen($sFileXLSPath);открываем книгу Excel
If @error Then;если не получилось, сообщить и выйти
MsgBox(16, "Ошибка!", "Ошибка")
Exit
EndIf
$aNumList = _ExcelSheetList($oExcel);узнаем сколько есть листов в книге
$var1 = UBound($aNumList)-1
MsgBox(64, "Кол-во листов", "В книге всего листов "& $var1)
If $var1 < $numList Then;если листов, меньше, чем надо, тогда
$NewNumList = $numList - $var1;узнаем сколько еще надо
_ExcelSheetActivate($oExcel, $var1)
$z=0
For $i=1 To $NewNumList;и создадим их
_ExcelSheetAddNew($oExcel)
_ExcelSheetMove($oExcel, $var1+$i, $var1+$z, True)
_ExcelSheetActivate($oExcel, $var1+$i)
$z=$z+1
Next
EndIf
_ExcelSheetActivate($oExcel, 1);активируем первый лист книги
;#############################################################################
;в этом блоке читаем созданный ранее файл-лист в массив (имена файлов MD)
Dim $aFileList;общий массив имен файлов
Dim $aFileMD;массив содержимого файла MD
Dim $aListMD[1];массив имен файлов для записи на 1 лист
If Not _FileReadToArray($PathFileList, $aFileList) Then
MsgBox (16,"Ошибка","Не удалось прочитать файл List.txt в массив")
Exit
EndIf
;##############################################################################
$x=0;счетчик порций лимита столбцов на лист
$y=1;счетчик листов книги
For $i=1 To $n Step $numColumn ;с первого по пследний файл с шагом кол-ва столбцов на лист
MsgBox(64, "Инфо", "Пишем столбцы, начиная с файла № " & $i)
For $j=$i To $n ;с номера файла следующего листа
_ArrayAdd($aListMD,$aFileList[$j]);формируем в массиве порцию стлобцов для 1-го листа
$x=$x+1
ExcelWrite($x);вызываем функцию записи в Excel
If $x=$numColumn Then ;если достигли лимита кол-ва столбцов на 1 лист, тогда
$y=$y+1;получаем номер следующего листа
_ExcelSheetActivate($oExcel, $y);и активируем следующий лист книги
$x=0;обнуляем счетчик кол-ва столбцов на 1 лист
Dim $aListMD[1];очищаем массив
ExitLoop
EndIf
Next
Next
Func ExcelWrite($x)
_ExcelWriteCell($oExcel, $aListMD[$x], 1, $x);пишем имя файла
_FileReadToArray ($aListMD[$x], $aFileMD);читаем содержимое файлов
_ExcelWriteArray($oExcel, 2, $x, $aFileMD, 1);пишем содержимое файла
EndFunc
For $i = 1 To $numList
_ExcelSheetActivate($oExcel, $i)
_ExcelRowDelete($oExcel, 2, 1);удаляем 2-ю строку таблицы текущего листа
Next
MsgBox(64, "Инфо", "Готово")
_ExcelBookClose($oExcel, 1, 0);закрываем книгу с сохранением