|
Как обойти через COM, только отфильтрованные строки в файле эксель? | ☑ | ||
---|---|---|---|---|
0
VID1234
13.12.22
✎
13:28
|
Здравствуйте. Есть файл эксель, в нем около 25000 строк, его с разной периодичностью нужно прочитывать и и выбирать только данные видимых (отфильтрованных) строк, а остальные игнорить. Как это можно сделать?
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); //ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Текст = "ru = ""Текст""; en = ""Text"""; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки"; ДиалогОткрытияФайла.Фильтр = "Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|"; ИмяФайла = ""; Если ДиалогОткрытияФайла.Выбрать() Тогда ИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла; Иначе Текст = "ru = ""Файл(ы) не выбран!""; en = ""File(s) not selected!"""; Предупреждение(НСтр(Текст)); Возврат; КонецЕсли; Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.DisplayAlerts = 0; Исключение Предупреждение("MS Excel не загружен!"); Возврат; КонецПопытки; Попытка Книга = Excel.Workbooks.Open(СокрЛП(ИмяФайла)); Исключение Excel.Quit(); //Предупреждение("Не удалось открыть файл!"+ ТекФайл); Предупреждение("Не удалось открыть файл!"+ ИмяФайла); Возврат; КонецПопытки; Попытка ЭксельЛист = Книга.Sheets("Лист1"); Исключение Сообщить("Не найдена страница Лист1"); ЗакрытьExcel(Книга, Excel); Возврат; КонецПопытки; Прочитал, про автофильтр, но не могу понять как его нужно применять. Подскажите пожалуйста! |
|||
1
DES
13.12.22
✎
13:59
|
Можно считать значение фильтра
OldFilter = .AutoFilter.Filters.Item(1).Criteria1 'считываем текущее состояние фильтра и в 1с фильтровать уже читая подряд |
|||
2
lodger
13.12.22
✎
14:00
|
а занафига ты притащил сюда целую портянку кода Открывашки excel?
AutoFilter надо вызывать у выделенной области. |
|||
3
lodger
13.12.22
✎
14:00
|
(2) в результат AutoFilter ты получишь область "поменьше". точнее рваную фильтром.
|
|||
4
VID1234
13.12.22
✎
14:03
|
(3) Здравствуйте. Стопор, поэтому и скинул, вот я получил ЭксельЛист, а что с ним дальше делать?
|
|||
5
lodger
13.12.22
✎
14:04
|
(4) а дальше определить откуда до куда там таблица
взять таблицу как область. у области вызвать .AutoFilter(); наслаждаться. |
|||
6
VID1234
13.12.22
✎
14:05
|
(1) Здравствуйте. Не совсем понял, Вы говорите считать подряд, т.е. мне придется все равно перебрать все 25 000 строк? И что должно быть перед точкой? Я получил ЭксельЛист
|
|||
7
VID1234
13.12.22
✎
14:06
|
(5) а, т.е. мне нужно определить область через range?
|
|||
8
VID1234
13.12.22
✎
14:15
|
ВсегоКолонок = ЭксельЛист.Cells(1,1).SpecialCells(7).Column;
ВсегоСтрок = ЭксельЛист.Cells(1,1).SpecialCells(7).Row; Так не стартует, исключительная ситуация не найдено ни одной ячейки.... |
|||
9
mistеr
13.12.22
✎
14:39
|
А не проще попросить пользователя скопировать отфильтрованные строки в новый файл?
Ну или макрос ему сделать. |
|||
10
VID1234
13.12.22
✎
14:41
|
(9) Здравствуйте. Ну Вы же знаете пользователей, да и самому интересно. Область я получил, теперь только нужно понять как на эту область наложить фильтр
|
|||
11
Asmody
13.12.22
✎
14:50
|
Есть у меня обработка загрузки из Excel, она читает штатно табдоком файлик xslx (без всяких COM), разбирает по листам, выводит нужный лист на форму, потом через СКД грузит в ТЗ, ну и дальше по базе.
Звонит пользователь: мол, в Excel 20 строк, а грузится 300! Я то-сё, не может быть такого. Говорю: "Показывай как делаешь". Смотрю - реально в Excel 20 строк, в табдоке на форме 20 строк. А в ТЗ - 300! Перетыкал всё, СКД проверил 10 раз, погонял на тестах... А пользователь прошаренный! И умеет фильтрами в Excel пользоваться. Короче, у него здоровая таблица, он поставил фильтр и прям с фильтром грузит в 1Ску. 1Ска умная - она скрытые строки загружает так же скрытыми! И в табдоке на форме их тоже не видно. А СКД пофиг скрытые они или нет, она данные читает. Полдня убил, чтобы это поймать. Если что, Табдок.Область(стр,,стр).Видимость смотреть надо |
|||
12
Kassern
13.12.22
✎
14:52
|
(11) забавно, не обращал на это внимание)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |