Что нового

Excell удаление строк

zoxer1

Знающий
Сообщения
72
Репутация
6
Добрый день!

В файле Excell надо удалить некоторые строки. Номера строк, для удаления, находятся в массиве. можно ли циклом проитись по массиву и удалить эти строки в файле? можно примерчик?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Пример:
Код:
#Include <Excel.au3>
Dim $aNumberStr[10] = [1, 2, 3, 7, 9, 21, 25, 29, 33, 37] ;массив с 10-ю номерами строк (с 0-го по 9-й)
$sFilePath = @ScriptDir & "\Test.xls" ;путь к файлу xls (тут он в директории скрипта)

$oExcel = _ExcelBookOpen($sFilePath) ;открываем файл Test.xls
If @error <> 0 Then ;если не получилось
    MsgBox(16, "Ошибка!", "Не удалось открыть файл: "&$sFilePath) ;сообщаем
	Exit ;и выходим
EndIf

_ExcelSheetActivate($oExcel, 1) ;активируем 1-й лист в книге
StrDel() ;вызываем функцию удаления строк
_ExcelSheetActivate($oExcel, 3) ;активируем 3-й лист в книге
StrDel() ;вызываем функцию удаления строк

Func StrDel() ;функция удаления строк
	For $i=0 To 9 ;в цикле от 0-го индекса массива по 9-й (всего 10 раз)
		_ExcelRowDelete($oExcel, $aNumberStr[$i]-$i, 1) ;удаляем строку из активного листа книги
		;номер строки берем из текущего индекса массива минус номер текущего индекса
		;т.к. при удалении текущей строки, следующая строка, которую надо удалить уже будет иметь меньший номер
	Next
EndFunc


Для наглядности файл Test.xls с 3-мя одинаковыми листами внутри.
Удаляются красные строки в 1-м и 3-м листах. Зеленые строки остаются.
 
Автор
Z

zoxer1

Знающий
Сообщения
72
Репутация
6
Спасибо большое за помощь! :beer:
 
Верх