![]() |
![]() |
|
из XLS в 1С - как узнать количество строк в XLS ? Ø |
☑ | ||
---|---|---|---|---|
0
ТаверСети
22.04.05
✎
12:14
|
Попытка
Прайс = Новый ComОбъект("Excel.Application"); Исключение Предупреждение("Не удалось создать COM-объект Excel.Application!!!"); Возврат; КонецПопытки; Попытка Книга = Прайс.WorkBooks().Open(ИмяФайла); Исключение Предупреждение("" + ОписаниеОшибки()); Возврат; КонецПопытки; ну че тутуа писать???? Книга.Close(); |
|||
1
miki
22.04.05
✎
12:15
|
65k.
Или тебе только не пустые? |
|||
2
ТаверСети
22.04.05
✎
12:16
|
miki
ну чтобы точно понятно что дальше ничего нету |
|||
3
miki
22.04.05
✎
12:18
|
Проверяй значение ячейки на <пусто> или маркер какой-нить пиши в конец ХЛС.
|
|||
4
ТаверСети
22.04.05
✎
12:18
|
miki (3)
нифина был другой способ мне тута каньше ктото обьяснил но я забыл а в архивах нету |
|||
5
Ret
22.04.05
✎
12:21
|
ВходExcel = СоздатьОбъект("Excel.Application");
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel); КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row; КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column; .... а далее все обходы по строкам и столбцам через циклы. |
|||
6
ТаверСети
22.04.05
✎
12:23
|
Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel); вот ето место пожалуйста поподробнее. как получить 1-й лист? |
|||
7
Ret
22.04.05
✎
12:25
|
+5 Как пример
//******************************************* //проверяет есть ли нужные сведения на листе Функция ПроверкаПередзагрузкой(ВыбранныйЛист,НомерЛиста); ЕстьНужныеСведения=0; КонСтолб=ВыбранныйЛист.Cells(1,1).SpecialCells(11). Column; Для i = НачСтр По КонСтр Цикл Если ПустоеЗначение(ВыбранныйЛист.Cells(i,3).Text)=1 Тогда Продолжить; Иначе Для к=1 по КонСтолб Цикл //Проверим ячейки на всякую дрянь Если ПроверкаБитыхСсылок(ВыбранныйЛист.Cells(i,к))=1 Тогда ВнестиВКомментарийЗагрузки("На выбранном вами листе №"+НомерЛиста+" имеются ошибки.Лист не будет загружен"); Возврат ЕстьНужныеСведения; КонецЕсли; КонецЦикла; Если //Возможно это индетификаторы колонок (Число(ВыбранныйЛист.Cells(i,3).Value)=3) и (Число(ВыбранныйЛист.Cells(i,1).Value)=1) и (Число(ВыбранныйЛист.Cells(i,2).Value)=2) и (Число(ВыбранныйЛист.Cells(i,4).Value)=4) и (Число(ВыбранныйЛист.Cells(i,5).Value)=5) и (Число(ВыбранныйЛист.Cells(i,6).Value)=6) и (Число(ВыбранныйЛист.Cells(i,7).Value)=7) и (Число(ВыбранныйЛист.Cells(i,8).Value)=8) и (Число(ВыбранныйЛист.Cells(i,9).Value)=9) и (Число(ВыбранныйЛист.Cells(i,10).Value)=10) и (Число(ВыбранныйЛист.Cells(i,11).Value)=11) и (Число(ВыбранныйЛист.Cells(i,12).Value)=12) и (Число(ВыбранныйЛист.Cells(i,13).Value)=13) и (Число(ВыбранныйЛист.Cells(i,14).Value)=14) и (Число(ВыбранныйЛист.Cells(i,15).Value)=15) и (Число(ВыбранныйЛист.Cells(i,16).Value)=16) и (Число(ВыбранныйЛист.Cells(i,17).Value)=17) Тогда //наверное то что нам нужно ЕстьНужныеСведения=1; Возврат ЕстьНужныеСведения; КонецЕсли; КонецЕсли; КонецЦикла; Возврат ЕстьНужныеСведения; КонецФункции // ПроверкаПередзагрузкой //Проверим, а есть ли нужные данные Если ПроверкаПередзагрузкой(НужныйЛист,ЛистExcel)=0 Тогда Предупреждение("На выбранном вами листе нет нужных сведений",5); Возврат; КонецЕсли; МаксимумПустыхСтрок=25;//чтобы просмотреть все строки, но не зациклиться СчетчикПустыхСтрок=0;//т.к. м.б. какие-либо строки оставлены пустыми для разделения и прочей красивости НайденыйСтатус=""; Для index=НачСтр По КонСтр Цикл // обход по строкам ЗначениеКолонки1 = НужныйЛист.Cells(index,1).Value; Если ПустоеЗначение(ЗначениеКолонки1)=1 Тогда //чтобы побыстрее просмотреть СчетчикПустыхСтрок=СчетчикПустыхСтрок+1; Если СчетчикПустыхСтрок>МаксимумПустыхСтрок Тогда //хорош копать СчетчикПустыхСтрок=0; Прервать; Иначе Продолжить; КонецЕсли; Иначе //не пустое значение 1колонки ................ ну и т.д. |
|||
8
Ret
22.04.05
✎
12:27
|
+5 и еще
//******************************************* //проверяет нет ли всякой бяки на в ячейке Функция ПроверкаБитыхСсылок(Ячейка) БитаяСсылка=""; ТекстЯчейки=Ячейка.Text; Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда БитаяСсылка=0; //Сообщить(Ячейка.Value); Иначе БитаяСсылка=1; //Сообщить(ТекстЯчейки); КонецЕсли; Возврат БитаяСсылка; КонецФункции // ПроверкаБитыхСсылок -------------------------------------------- это основные операторы модуля //Для исключения ошибок екселя СписокОшибокЁкселя=СоздатьОбъект("СписокЗначений"); СписокОшибокЁкселя.ДобавитьЗначение("#ПУСТО!"); СписокОшибокЁкселя.ДобавитьЗначение("#ДЕЛ/0!"); СписокОшибокЁкселя.ДобавитьЗначение("#ЗНАЧ!"); СписокОшибокЁкселя.ДобавитьЗначение("#ССЫЛКА!"); СписокОшибокЁкселя.ДобавитьЗначение("#ИМЯ?"); СписокОшибокЁкселя.ДобавитьЗначение("#ЧИСЛО!"); СписокОшибокЁкселя.ДобавитьЗначение("#Н/Д"); |
|||
9
ТаверСети
22.04.05
✎
12:34
|
Ret(5)
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel); вот ето место пожалуйста поподробнее. как получить 1-й лист? |
|||
10
ТаверСети
22.04.05
✎
12:36
|
мне раньше показывали способ как
узнать количество непустых строк. |
|||
11
Lex1C
22.04.05
✎
12:39
|
9 - Метод Sheets(НомерЛиста)
|
|||
12
Ret
22.04.05
✎
12:52
|
(9)
КоличествоЛистов=ВходExcel.Worksheets.Count; Для i=1 По КоличествоЛистов Цикл |
|||
13
ТаверСети
22.04.05
✎
13:01
|
не сегодня чета нету умных...
|
|||
14
Железяка
22.04.05
✎
13:02
|
(13)Предупреждение
|
|||
15
Ret
22.04.05
✎
13:05
|
Мля, итак уже все разжевал...
Ты чо? КоличествоЛистов=ВходExcel.Worksheets.Count; Для i=1 По КоличествоЛистов Цикл НужныйЛист=ВходExcel.Worksheets.Item(i); .........и т.д. |
|||
16
ТаверСети
22.04.05
✎
13:07
|
Ret(15)
как узнать номер последней не пустой строки? |
|||
17
ТаверСети
22.04.05
✎
13:09
|
НужныйЛист=Книга.Sheets(1);
КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row; КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column; Для поз=1 по КонСтрока Цикл Строка=НужныйЛист.Cells(поз,1).Value; Сообщить(""+поз+"="+Строка); КонецЦикла; ========================= нехочет работать |
|||
18
Ret
22.04.05
✎
13:11
|
(13)
Я конечно привожу куски кода, который уже заточен под мои задачи, но из них вполне можно понять логику и использовать под себя. Когда сам писал это, не мало пришлось покапаться в доках, а тебе выкладываешь на тарелочке, а ты разобраться не можешь. За тебя-то никто не будет делать. Смотри, разбирайся и делай. |
|||
19
miki
22.04.05
✎
13:15
|
Может тебе надо:
РеальноЮзается=Лист.UsedRange; КолонокРеальноЮзаемых=ИспользуемыйЛист.Columns.Count(); СтрокРеальноЮзаемых=ИспользуемыйЛист.Rows.Count(); |
|||
20
Ret
22.04.05
✎
13:15
|
Мля.... я тащусь....
НужныйЛист=ВходExcel.Worksheets.Item(ЛистExcel); КонСтр=НужныйЛист.Cells(1,1).SpecialCells(11).Row; КонСтолб=НужныйЛист.Cells(1,1).SpecialCells(11).Column; Для index=НачСтр По КонСтр Цикл // обход по строкам Для index2 = 1 По КонСтолб Цикл //обход по колонкам Значение = НужныйЛист.Cells(index,index2).Value; ------далее работаешь со значением ---------- и т.д. (шо тебе ящо конец цикла написать?) |
|||
21
ТаверСети
22.04.05
✎
13:16
|
короче ето делается так.
===================== Процедура ЗагрузитьНажатие(Элемент) Попытка Прайс = Новый ComОбъект("Excel.Application"); Исключение Предупреждение("Не удалось создать COM-объект Excel.Application!!!"); Возврат; КонецПопытки; Попытка Книга = Прайс.WorkBooks().Open(ИмяФайла); Исключение Предупреждение("" + ОписаниеОшибки()); Возврат; КонецПопытки; НужныйЛист=Книга.Sheets(1); //НужныйЛист=Прайс.Worksheets.Item(1); КонСтрока=НужныйЛист.Cells(1,1).SpecialCells(11).Row; КонСтолбец=НужныйЛист.Cells(1,1).SpecialCells(11).Column; Для поз=1 по КонСтрока Цикл Строка=НужныйЛист.Cells(поз,1).Value; Сообщить(""+поз+"="+Строка); КонецЦикла; Книга.Close(); КонецПроцедуры ============================ ето я чета туплю сегодня спасибо за ответ Ret-у |
|||
22
Ret
22.04.05
✎
13:27
|
Cells(1,1).SpecialCells(11).Row -последняя не пустая строка
Cells(1,1).SpecialCells(11).Column - последний не пустой столбец и еще выше я привел процеДУРУ ПроверкаБитыхСсылок(Ячейка) привел. Перед загрузкой если там ошибки, то на Значение = НужныйЛист.Cells(index,index2).Value 1С вылетает. Поэтому их надо обязательно отсечь!!! Не помню где это описано, но это известная весчь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |