|
Пытаюсь выгрузить из Эксель (300 000 строк) в ТЗ, не пойму почему в ТЗ нет данных.ПОВТОР | ☑ | ||
---|---|---|---|---|
0
SkillUp
18.10.18
✎
07:54
|
Пардон, думал вчера понял в чем дело, но ОШИБСЯ. Пытаюсь выгрузить из Эксель (300 000 строк) в ТЗ, Отладчиком, в конце процедуры ТЗ Пустая... Опытные люди советую воспользоватся- getrows() , НО где и как этим воспользоватся не пойму, и в интернете инфы почти нету. Читал эту статью - http://catalog.mista.ru/public/20090/, так и не понял что поменять в моем коде чтоб ТЗ заполнить значениями... Прошу помощи...
Код: Функция ПрочитатьЛистExcel(ТЗ = Неопределено, ЛистЭксель = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт Если ЛистЭксель = Неопределено Тогда ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application"); КонецЕсли; Если ВсегоСтрок = 0 Тогда ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; КонецЕсли; Если ВсегоКолонок = 0 Тогда ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; КонецЕсли; Если ТЗ = Неопределено Тогда ТЗ = Новый ТаблицаЗначений; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; КонецЕсли; Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; ЛистЭксель = Неопределено; Возврат ТЗ; КонецФункции Тз.Количество() в конце процедуры = 300 000! |
|||
1
Остап Сулейманович
18.10.18
✎
08:15
|
(0) Можно уточнить? Для понимания происходящего...
1. Это что: ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application"); 2. Это действительно пытаетесь получить для пустого листа? Или для всего объекта Excel? : ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; Ну и вопрос всех вопросов - где же все таки эксель берет данные? Я надеюсь из файла? Но вот интрига - никто его не пытается прочитать. У вас эксель сам знает с каким файлом и на каком листе работать? |
|||
2
SkillUp
18.10.18
✎
08:19
|
(1) НЕ, ТАМ ЗАПОЛНЕНО НОМРАЛЬНО. ЭТО КОД ИЗ СТАТЬИ. в МОЕМ КОДЕ УАЗАН ПУТЬ...
|
|||
3
SkillUp
18.10.18
✎
08:19
|
(1) Если ЛистЭксель = Неопределено Тогда
ЛистЭксель = ПолучитьCOMОбъект(ПолеВвода1); КонецЕсли; Если ВсегоСтрок = 0 Тогда ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; КонецЕсли; Если ВсегоКолонок = 0 Тогда ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; КонецЕсли; Если ТЗ = Неопределено Тогда ТЗ = Новый ТаблицаЗначений; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; КонецЕсли; Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; ЛистЭксель = Неопределено; Возврат ТЗ; |
|||
4
Остап Сулейманович
18.10.18
✎
08:20
|
(2) Гы. У тебя капс залит кофе)))).
|
|||
5
SkillUp
18.10.18
✎
08:23
|
(4) Просто начинаю нервничать... )
|
|||
6
Остап Сулейманович
18.10.18
✎
08:23
|
(3) Вот смотри :
ЛистЭксель = ПолучитьCOMОбъект(ПолеВвода1); Здесь в "ЛистЭксель" лежит Excell.Application. А вот здесь : ЛистЭксель.Cells.SpecialCells(11).Row; ты к нему обращаешься как к Excell.Application.ActiveWorkBook.ActiveSheets Что говорят тов. отладчик по поводу ВсегоСтрок? |
|||
7
SkillUp
18.10.18
✎
08:27
|
(6) Ой, блин... точно...
|
|||
8
SkillUp
18.10.18
✎
08:30
|
(6) Если подскажите как граммотно передать в эту функцию эксель свой, буду очень благодарен...
|
|||
9
SkillUp
18.10.18
✎
08:32
|
ЛистЭксель = Новый COMОбъект("Excel.Application");
ЛистЭксель.WorkBooks.Open(ПолеВвода1); ЛистЭксель = Excel.Sheets(1); |
|||
10
SkillUp
18.10.18
✎
08:44
|
(6) Пытаюсь передать пустой лист, эксель и удивляюсь почему ТЗ пустая ))) гениально...
|
|||
11
13_Mult
18.10.18
✎
08:50
|
(8) Excel = ПолучитьCOMОбъект(ПутьКФайлу)
ЛистExcel = Excel.Sheets(1) НомерПервойСтроки = 1 НомерПервойКолонки = 1 ТЗ - ранее созданная твоя таблица значений для заполнения из Excel (можно её не передавать и функция создаст свою) ТЗ_ИзExcel = ПрочитатьЛистExcel(ТЗ, ЛистExcel, НомерПервойСтроки, НомерПервойКолонки, 0, 0); |
|||
12
SkillUp
18.10.18
✎
09:58
|
(11) Пасиб.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |