69 lines
3.5 KiB
Plaintext
69 lines
3.5 KiB
Plaintext
// Клиентский модуль для COM-взаимодействия с Excel
|
|
// Содержит только COM-вызовы
|
|
|
|
&НаКлиенте
|
|
Функция ОткрытьФайлExcel(ПутьКФайлу) Экспорт
|
|
Попытка
|
|
Excel = Новый COMОбъект("Excel.Application");
|
|
Excel.Visible = Ложь;
|
|
Excel.DisplayAlerts = Ложь;
|
|
Книга = Excel.Workbooks.Open(ПутьКФайлу);
|
|
Возврат Новый Структура("Книга, Excel", Книга, Excel);
|
|
Исключение
|
|
Сообщить("Не удалось открыть Excel: " + ОписаниеОшибки());
|
|
Возврат Неопределено;
|
|
КонецПопытки;
|
|
КонецФункции
|
|
|
|
&НаКлиенте
|
|
Процедура ЗакрытьExcel(КонтекстExcel, ВременныйФайл) Экспорт
|
|
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
|
Попытка
|
|
КонтекстExcel.Книга.Close(Ложь);
|
|
КонтекстExcel.Excel.Quit();
|
|
Исключение
|
|
КонецПопытки;
|
|
Если ЗначениеЗаполнено(ВременныйФайл) Тогда УдалитьФайлы(ВременныйФайл); КонецЕсли;
|
|
КонецПроцедуры
|
|
|
|
&НаКлиенте
|
|
Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки) Экспорт
|
|
Попытка
|
|
Значение = Лист.Cells(Строка, Колонка).Value;
|
|
Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли;
|
|
Возврат Число(Значение);
|
|
Исключение
|
|
Сообщить("Ошибка чтения числа: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка);
|
|
Возврат 0;
|
|
КонецПопытки;
|
|
КонецФункции
|
|
|
|
&НаКлиенте
|
|
Функция ПрочитатьЯчейкуСтрока(Лист, Строка, Колонка) Экспорт
|
|
Попытка
|
|
Значение = Лист.Cells(Строка, Колонка).Value;
|
|
Если Значение = Неопределено Тогда Возврат ""; КонецЕсли;
|
|
Возврат СокрЛП("" + Значение);
|
|
Исключение
|
|
Возврат "";
|
|
КонецПопытки;
|
|
КонецФункции
|
|
|
|
&НаКлиенте
|
|
Функция ИзвлечьИмяЛистаИзФормулы(Формула) Экспорт
|
|
Если Формула = Неопределено Тогда Возврат ""; КонецЕсли;
|
|
Текст = СокрЛП("" + Формула);
|
|
Если Не СтрНачинаетсяС(Текст, "='") Тогда Возврат ""; КонецЕсли;
|
|
Поз = СтрНайти(Текст, "'!");
|
|
Если Поз = 0 Тогда Возврат ""; КонецЕсли;
|
|
Возврат Сред(Текст, 3, Поз - 3);
|
|
КонецФункции
|
|
|
|
&НаКлиенте
|
|
Функция НайтиЛист(Книга, ИмяЛиста) Экспорт
|
|
Для Каждого Лист Из Книга.Sheets Цикл
|
|
Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли;
|
|
КонецЦикла;
|
|
Возврат Неопределено;
|
|
КонецФункции
|