работа с файлами *.xls

  • Автор темы Stim
  • Дата начала
S

Stim

#1
Никак не могу найти решение своей задачи, если у кого-нибудь есть желание и возможность, то помогите составить алгоритм/программу для открытия из заданого каталога всех файлов с заданым расширением.
 

Zab

Well-known member
07.08.2006
583
0
#2
Алгоритм:
1.Начало
2.Получаем очередной файл
3.Если файл получен, идем на п.4.
иначе на п.5
4.Если расширение = заданному, открываем файл
иначе идем к п.2
5.Конец
 

Zab

Well-known member
07.08.2006
583
0
#3
Код:
ПроцедураОткрытьФайлы(Путь, Маска=)
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска); 
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
Если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") Тогда 
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4);					
// Выполняем действия по открытию файла
КонецЕсли;	
КонецЕсли;
КонецЕсли;	
КонецЦикла;
Код не мой, думаю, можно написать оптимальнее, но работает. Надеюсь поможет.
И ты перестанешь флудить во всех ветках форума...
 
S

Stim

#4
Ура... щас попробую интегрировать это в мою программу. З.ы я тоже надеюсь поможет, а флуда небыло, был оффтоп, за что награжден уже предупреждением. Спасибо что помог.
 
S

Stim

#5
ммм...так 1ый же файл не будет читаться ??
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска);
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
т.к в цикле сразу стоит найтиследфайл.
так будет правильно
Код:
	ПроцедураОткрытьФайлы(Путь, Маска=)
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска); 
Пока Сокрлп(ИмяФайла)<>"" Цикл
Если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") и 
(ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска)) тогда
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4); 
// Выполняем действия по открытию файла
КонецЕсли;	
КонецЕсли;
иначе
ИмяФайла=ФС.НайтиСледующийФайл();
если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") тогда
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4); 
// Выполняем действия по открытию файла

КонецЕсли;	
КонецЕсли;
КонецЕсли;
конецЦикла;
ммм.да, некрасиво получилось, но надеюсь читабельно. :blink:
АтрибФайла=Сред(АтрибФайла,4,1);
Если (АтрибФайла<>"1") тогда
зачем это нужно можешь пояснить???
 

Zab

Well-known member
07.08.2006
583
0
#6
ммм...так 1ый же файл не будет читаться ??
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска);
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
т.к в цикле сразу стоит найтиследфайл.
так будет правильно
А это не важно, т.к. первый файл это ".". А нам он не нужен.
Хочешь, чтоб было правильнее, опусти получение следующего файла в конец цикла. :blink:
зачем это нужно можешь пояснить???
Чтобы не брать каталоги
Согласен, что исходный код для тебя не оптимален, я всего-навсего нарезал тебе куски исходника, с несклоько большей функциональностью. Но ты что-то странное натворил ;)
Извини, не вникал сильно в твой код, но, ИМХО, он нерабочий, т.к. цикл будет вечным.
ты постоянно получаешь первый файл.
 
S

Stim

#7
да чото намудрил... опустить в конец мудрое решение )))) сэнк ю еще раз