|
Непонятная ситуация с экселем | ☑ | ||
---|---|---|---|---|
0
lanc2233
30.11.12
✎
16:38
|
Эксель = Новый ComОбъект("excel.application");
Книга = Эксель.WorkBooks.Open(Файл); Лист = Книга.WorkSheets(1); Код = СокрЛП(Лист.Cells(инд,1).value); Значение Код = Неопределено, по любой из ячеек. Раньше этот-же код работал. В чем может быть причина? |
|||
1
Staffa
30.11.12
✎
16:39
|
может не с той страницы читаешь?
|
|||
2
mikecool
30.11.12
✎
16:39
|
посмотри text чему равен
|
|||
3
Eugene_life
30.11.12
✎
16:42
|
(0) А "инд" чему равен?
|
|||
4
lanc2233
30.11.12
✎
16:42
|
(1) Она там единственная. Но перед ней несколько удалил. Может быть ее номер не равен 1 ?
|
|||
5
lanc2233
30.11.12
✎
16:43
|
(3) Это цикл, там на любой номер строки и колонки неопределено выдает.
|
|||
6
mikecool
30.11.12
✎
16:44
|
а как выглядит неопределено в экселе?
|
|||
7
Reset
30.11.12
✎
16:44
|
Код = СокрЛП(Лист.Cells(инд,1).value);
"Код" никак не может быть неопределено - всегда Строка Это так, потроллить |
|||
8
mikecool
30.11.12
✎
16:48
|
(7) не обманывай, иногда число или дата
|
|||
9
lanc2233
30.11.12
✎
16:49
|
(7) я имел в виду Лист.Cells(инд,1).value , смотрел в отладчике
|
|||
10
lanc2233
30.11.12
✎
16:53
|
с номером листа какая-то шляпа была. Обратился по имени стало нормально.
попутно вопрос Эксель.Cells(1,1).SpecialCells(11).Row количество строк какого листа определяет? |
|||
11
mikecool
30.11.12
✎
16:54
|
лови кусок
Лист = pXLS.Worksheets(НомерЛиста); СчетчикКолонок = 0; СчетчикСтрок = 1; СтрокаСтарта = СписокКординаты.Получить("НомерСтроки"); КолонкаСтарта = СписокКординаты.Получить("НомерКолонки"); Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value; КолонокТЗ = ТЗ.КоличествоКолонок(); Пока ПустаяСтрока(Значение) = 0 Цикл ТЗ.НоваяСтрока(); //Пока ПустаяСтрока(Значение) = 0 Цикл Для Сч = 1 По КолонокТЗ Цикл ТипКолонки = ""; Заголовок = ""; ТЗ.ПолучитьПараметрыКолонки(СчетчикКолонок + 1, ТипКолонки, , , Заголовок); Если ТипКолонки = "Число" Тогда ЗначениеТипа = Число(Значение); ИначеЕсли ТипКолонки = "Дата" Тогда ЗначениеТипа = Дата(Значение); ИначеЕсли Найти(ТипКолонки, "Справочник") > 0 Тогда ЗначениеТипа = ПолучитьЗначениеСправочника(ТипКолонки, Значение); Иначе ЗначениеТипа = Значение КонецЕсли; ТЗ.УстановитьЗначение(СчетчикСтрок, СчетчикКолонок + 1, ЗначениеТипа); СчетчикКолонок = СчетчикКолонок + 1; Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value; КонецЦикла; СчетчикКолонок = 0; СчетчикСтрок = СчетчикСтрок + 1; Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value; КонецЦикла; |
|||
12
mikecool
30.11.12
✎
16:55
|
(10) того, что Эксель
|
|||
13
mikecool
30.11.12
✎
16:57
|
в довесок - проверка на соответствие файла шаблону
Функция НайтиВФайлеНачалоШаблона(pXLS, Секция) НомерСтрокиДанных = 0; Т = СоздатьОбъект("Таблица"); Т.ИсходнаяТаблица("Шаблоны"); Т.ВывестиСекцию(Секция); Лист = pXLS.Worksheets(НомерЛиста); Сч = 1; ТекстЯчейки = Т.Область(1, Сч, 1, Сч).Текст; СтрокаНачало = -1; КолонкаНачало = -1; Попытка СтрокаНачало = Лист.UsedRange.Find(ТекстЯчейки).Row; КолонкаНачало = Лист.UsedRange.Find(ТекстЯчейки).Column; Исключение Сообщить("Выбранный файл не соответствует шаблону, не найдена колонка " + ТекстЯчейки); КонецПопытки; СписокКоординаты = СоздатьОбъект("СписокЗначений"); СписокКоординаты.ДобавитьЗначение(СтрокаНачало, "НомерСтроки"); СписокКоординаты.ДобавитьЗначение(КолонкаНачало, "НомерКолонки"); Если СтрокаНачало = -1 Тогда Возврат СписокКоординаты; КонецЕсли; Пока ПустаяСтрока(ТекстЯчейки) = 0 Цикл КолонкаМакет = СокрЛП(ТекстЯчейки); КолонкаФайл = СокрЛП(Лист.Cells(СтрокаНачало, КолонкаНачало + Сч - 1).Text); Если КолонкаМакет <> КолонкаФайл Тогда Сообщить("Ожидается заголовок колонки в файле " + КолонкаМакет + ", считан заголовок " + КолонкаФайл + ", файл некорректен, не загружен..."); СписокКоординаты.Установить("НомерСтроки", -1); Возврат СписокКоординаты; КонецЕсли; Сч = Сч + 1; ТекстЯчейки = Т.Область(1, Сч, 1, Сч).Текст; КонецЦикла; Возврат СписокКоординаты; КонецФункции |
|||
14
lanc2233
30.11.12
✎
16:58
|
(12) Эксель = Новый ComОбъект("excel.application");
это еще никакой лист.. или я чего-то не понимаю ? |
|||
15
Reset
30.11.12
✎
17:35
|
(8) Троллинг, судя по всему, успешный :-)
СокрЛП не может число или дату вернуть, равно как и неопределено |
|||
16
mikecool
30.11.12
✎
17:39
|
(15) а, чет сразу не допер )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |