Имя: Пароль:
1C
 
Как узнать сколько всего строк в на листе Excel?
0 gar_den
 
18.11.10
11:40
?
1 Grusswelle
 
18.11.10
11:41
65536
2 Fragster
 
гуру
18.11.10
11:42
Функция ТаблицаИзФайлаЭксель(ФайлИмпорта, ЕстьНазванияКолонок = Истина)
   Таблица = Новый ТаблицаЗначений;
   Если ПустаяСтрока(ФайлИмпорта) Тогда
       Предупреждение("Не выбран файл");
       Возврат Таблица;
   КонецЕсли;
   
   Попытка
       excel = Новый COMОбъект("excel.application");
       workbook = excel.workbooks.open(ФайлИмпорта);
       Массив = workbook.activesheet.usedrange.value.Выгрузить();
       workbook.close();
       workbook = 0;
   //    excel.quit();
       excel = 0;
       
       ЧислоКолонок = Массив.ВГраница();
       ЧислоСтрок = Массив.Получить(0).ВГраница();
       
       Для СчКол = 0 По ЧислоКолонок Цикл
           Если ЕстьНазванияКолонок Тогда
               Попытка
                   Таблица.Колонки.Добавить(Массив.Получить(СчКол).Получить(0));
               Исключение
                   Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"));
               КонецПопытки;
           Иначе
               Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"));
           КонецЕсли;
       КонецЦикла;
       
       Для СчСтрок = ?(ЕстьНазванияКолонок,1,0) По ЧислоСтрок Цикл
           ЕстьЗначение = Ложь;
           Для СчКол = 0 По ЧислоКолонок Цикл
               Если Не ПустаяСтрока(Массив[СчКол][СчСтрок]) Тогда
                   ЕстьЗначение = Истина;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
           Если ЕстьЗначение Тогда
               Строка = Таблица.Добавить();
               Для СчКол = 0 По ЧислоКолонок Цикл
                   Строка[СчКол] = Массив[СчКол][СчСтрок];
               КонецЦикла;
           КонецЕсли;
       КонецЦикла;
   Исключение
       Сообщить("Не получилось загрузить данные из EXCEL");
   КонецПопытки;
   
   Возврат Таблица;
   
КонецФункции
3 Fragster
 
гуру
18.11.10
11:42
(1) а в 2007?
4 dk
 
18.11.10
11:43
5 Tatitutu
 
18.11.10
11:44
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
6 mzelensky
 
18.11.10
11:44
млжно вот так:

//ОБРАБАТЫВАЕМ ФАЙЛ
       НомерПервойСтроки=2;
       НомерПервойКолонки=1;
       ВсегоСтрок = Ех.Sheets(1).Cells.SpecialCells(11).Row;
       ВсегоКолонок = Ех.Sheets(1).Cells.SpecialCells(11).Column;

       ТЗ =  Новый ТаблицаЗначений;
       Для Счетчик = 1 По ВсегоКолонок Цикл
           ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
       КонецЦикла;

       Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл
           НоваяСтрока = ТЗ.Добавить();
       КонецЦикла;

       Область = Ех.Sheets(1).Range(Ех.Sheets(1).Cells(НомерПервойСтроки,НомерПервойКолонки), Ех.Sheets(1).Cells(ВсегоСтрок,ВсегоКолонок));
       Данные = Область.Value.Выгрузить();

       Для Счетчик = 0 По ВсегоКолонок-1 Цикл
           ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
       КонецЦикла;
7 mzelensky
 
18.11.10
11:45
*5) +1 :)
8 vartanet
 
18.11.10
11:54
// открываем excel
   Эксель = Новый COMОбъект("Excel.Application");
   ЭксельЭтотОбъектКниги = Эксель.Workbooks;
   КнигаИзФайла = ЭксельЭтотОбъектКниги.Open(ЗагружаемыйФайл);
   
   // обработка
   ЛистИзФайла = КнигаИзФайла.Worksheets(3);
   
   МассивыИзЭксель = ЛистИзФайла.UsedRange.Value.Выгрузить();
   
   Массив1 = МассивыИзЭксель[0];

Сообщить("Количества строк в excel: "+"Массив1.Количество());
   
   // закрываем книгу
   КнигаИзФайла.Close();
9 vartanet
 
18.11.10
11:57
в моем случае вся страница excel целиком конвертируется в список массивов. и дальше работа с excel идет только средствами 1С - обычная работа с массивами. удобно, если нужно только вытащить данные из файла..
10 gar_den
 
18.11.10
12:26
ниодин из методов не работает
11 chio2005
 
18.11.10
12:33
Если ДиалогОткрытияФайла.Выбрать() Тогда
       ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
   Иначе
       Возврат;
   КонецЕсли;
   
//    открываем экселовский файлик...    
   Попытка
       Excel = Новый COMОбъект("Excel.Application");
       Excel.WorkBooks.Open(ПутьКФайлу);
       Состояние("Обработка файла Microsoft Excel...");
       ExcelЛист = Excel.Sheets(1);
   Исключение
       Сообщить("Ошибка открытия книги Excel.");
       Возврат;
   КонецПопытки;
   
//    открыли успешно, теперь обработка
   StartingRow = 15;    //    отсюда начинается описание свойств
   RowCount    = ExcelЛист.UsedRange.Rows.Count;
   
   Для Row = StartingRow По RowCount Цикл
//   что-то там...
   КонецЦикла;
12 chio2005
 
18.11.10
12:34
(11)+
т.е.
RowCount    = ExcelЛист.UsedRange.Rows.Count;
у меня это работает 100%
13 vartanet
 
18.11.10
12:49
кхм. у меня загрузка десятка прайсов разных контрагентов так устроена. прайсы самые разные по структуре. все работает.

МассивыИзЭксель = ЛистИзФайла.UsedRange.Value.Выгрузить();
МассивыИзЭксель[0].Количество();
14 gar_den
 
18.11.10
13:00
(12) от спасибо! от помог! точняк работает!)
15 gar_den
 
18.11.10
13:02
(14) + все остальные - аналог юнирепса, а там мой файл тоже не сработал) Там дофига группировок разных было и чего-то такого что из 2000 строк он подсчитывал только 80
16 NcSteel
 
18.11.10
13:03
(0) Запросом.
17 NcSteel
 
18.11.10
13:05
Select Count(*) From [листнужный$]
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн