программно(обработкой) из 1С проверить ячейки таблицы Excel на заполненные значения (например > 0)

1. TariK 14.12.21 15:52 Сейчас в теме
Всем привет!
Есть Excel документ, с несколькими листами.
Вопросы:
1) Как загрузить в таблицу значений конкретный (указанный в реквизите пользователем) лист? Интересует только код где надо выбрать лист в зависимости от значение переменной (название листа) и загрузить его в таблицу значения
2) Есть колонка "Сумма" в таблице Excel, где есть пустые ячейки и заполненные цифрами. Нужно перенести всю строку в таблицу значения если в колонке "Сумма" есть цифры > 0. Какой код для этого поиска?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dmbarchenkov 14.12.21 16:41 Сейчас в теме
(1) выбор листа в Экселе:
Excel = Новый COMОбъект("Excel.Application");
		Excel.WorkBooks.Open(ИмяВремФайла);
		Книга = Excel.WorkBooks(1);
		Лист = Книга.WorkSheets(НомерЛиста);


Описываете Таблицу значений, перебираете в цикле ячейки и заполняете свою Таблицу значений.
4. TariK 21.12.21 15:39 Сейчас в теме
(3)
Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяВремФайла);
Книга = Excel.WorkBooks(1);
Лист = Книга.WorkSheets(НомерЛиста);

Не прокатило, не могу победить ошибку
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(37)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string
5. TariK 21.12.21 15:41 Сейчас в теме
(3)


&НаКлиенте
Процедура Команда1(Команда)  
		ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбора.Заголовок = "Выберите файл";
	
	Если ДиалогВыбора.Выбрать() Тогда
		
		ПутьКEXCEL = ДиалогВыбора.ПолноеИмяФайла; 
		 нФайл = Новый Файл(ПутьКEXCEL); 
		  ФайлEXCEL = нФайл.ПолноеИмя;
		
		ДвоичДанные = Новый ДвоичныеДанные(ПутьКEXCEL);
		
		//КомандаВыбратьФайлНаСервере(ДвоичныеДанные,Файл.Расширение);
		
	КонецЕсли;
		//нФайл = Новый Файл(ИмяФайла);
	
	Если НЕ нФайл.Существует() Тогда 
		Возврат;
	КонецЕсли;
	
	//ДвоичДанные = Новый ДвоичныеДанные(ПутьКEXCEL);
	
	ОбработкаОЛЕНаСервере(ДвоичДанные, нФайл.Расширение);
КонецПроцедуры


&НаСервере
Процедура ОбработкаОЛЕНаСервере(ДвоичДанные, Расширение)
	ФайлЭксельНаСервере = ПолучитьИмяВременногоФайла(Расширение);
	ДвоичДанные.Записать(ФайлЭксельНаСервере);

	Попытка  
			Эксель = Новый COMОбъект("Excel.Application");// !!!!!!!!!!!!!!!!!!!!!!!!зззззззззззззздесть падает
        Эксель.WorkBooks.Open(ФайлЭксельНаСервере);
        Книга = Эксель.WorkBooks(1); 
	//	ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
        Лист = Книга.WorkSheets(1);
		//Эксель.DisplayAlerts = 0;
		//Эксель.Visible = 0;
	Исключение 
		Сообщить(ОписаниеОшибки()); 
   		Return;
	КонецПопытки;

	// 
	// Работаем с данными Excel
	//
	
	Эксель.Workbooks.Close();
	Эксель.Application.Quit();
КонецПроцедуры
Показать
6. dmbarchenkov 21.12.21 17:40 Сейчас в теме
(5) нужно comcntr.dll зарегистрировать.
Вот ссылка например: https://infostart.ru/1c/articles/1108259/
2. starik-2005 3046 14.12.21 15:54 Сейчас в теме
Очень просто, с Вас куча бабла )))

https://infostart.ru/1c/articles/533248/ - здесь есть пример...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот