|   |   | 
| 
 | Загрузка из excel - что не так? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ik 28.05.19✎ 11:28 | 
        Код:
 Приложение = Новый COMОбъект("Excel.Application"); Приложение.Visible = Ложь; Попытка // Открытие файла Microsoft Excel Состояние("Открытие файла Microsoft Excel..."); Файл = Приложение.WorkBooks.Open(Объект.ИмяФайла); Даёт ошибку Ошибка при открытии/чтении файла C:\1C\_Base\СКС\Вода Стоки 2019.xlsx. {ВнешняяОбработка.ФормированиеСчетовПоДаннымИзExcel.Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Open): Неизвестная ошибка Если ставлю Приложение.Visible = Истина; все отрабатывает, но висит открытый excel | |||
| 1
    
        garantNo4x 28.05.19✎ 11:30 | 
        а ты уверен что он у тебя не открыт когда ты его открываешь в инвизибле ?     | |||
| 2
    
        ik 28.05.19✎ 11:33 | 
        Диспетчер задач не кажет.     | |||
| 3
    
        Skylark 28.05.19✎ 11:47 | 
        > 
 но висит открытый excel В смысле? Открывается окно приложения что ли? Никогда такого не было. Или в диспетчере задач висит? А ты по окончании упражнений Эксель то закрываешь? Типа вот так для надежности: // сбросим все переменные НашФайл = Неопределено; НашЛист = Неопределено; Excel.WorkBooks.close(); Excel.Quit(); Excel = Неопределено; | |||
| 4
    
        ik 28.05.19✎ 11:50 | 
        Да, открывается окно excel. Закрывается по выходу из процедуры.
 В диспетчере при незапущенной процедуре не висит. | |||
| 5
    
        lodger 28.05.19✎ 11:51 | 
        попробуй так
 Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Предупреждение("Ошибка запуска Excel на этом компьютере или терминале."); Возврат; КонецПопытки; Excel.DisplayAlerts = 0; Попытка Excel.WorkBooks.Open(ИмяФайла); Исключение Excel.Quit(); Excel = 0; Предупреждение("Ошибка открытия файла, возможно он занят другим приложением."); Возврат; КонецПопытки; | |||
| 6
    
        Skylark 28.05.19✎ 11:52 | 
        Попробуй имя файла без пробелов сделать     | |||
| 7
    
        WhiteDragon93 28.05.19✎ 11:54 | 
        (4) процесс может под другим пользователем запускаться, в зависимости от настроек COM     | |||
| 8
    
        ik 28.05.19✎ 11:56 | 
        >Попробуй имя файла без пробелов сделать
 Не помогло >процесс может под другим пользователем запускаться, в зависимости от настроек COM Это персональный комп | |||
| 9
    
        WhiteDragon93 28.05.19✎ 12:05 | 
        Попытка
 Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Произошла ошибка при обращение к Excel:" + Символы.ПС + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; Excel.WorkBooks.Open(ПутьДоExcel); Из последнего что недавно делал - вот этот отработал точно | |||
| 10
    
        dk 28.05.19✎ 12:13 | 
        файловая? может он на сервере пытается твой локальный файл открыть?     | |||
| 11
    
        ik 28.05.19✎ 12:18 | 
        Файловая.
 И - ещё раз, ключевое - видимость: > Приложение.Visible = Истина; все отрабатывает, но висит открытый excel Windows 10, Office 2007 | |||
| 12
    
        ik 28.05.19✎ 12:20 | 
        К сожалению, не могу читать через Таблицу - много листов.     | |||
| 13
    
        dk 28.05.19✎ 12:29 | 
        открой вручную этот же файл
 может там на макросы матерится или небезопасный файл | |||
| 14
    
        dk 28.05.19✎ 12:34 | 
        и дисплейалертс закомменть - увидишь что ему не нравится     | |||
| 15
    
        Ns33 28.05.19✎ 12:45 | 
        Попробуй такой вариант:
 ExcelApp=Новый COMОбъект("Excel.Application"); ExcelApp.DisplayAlerts=0; ConfirmConversions=0; ReadOnly=1; Книга=ExcelApp.Workbooks.Open(ТекПутьКФайлу,ConfirmConversions,ReadOnly); Лист=Книга.Sheets(1); ExcelApp.Visible=0; | |||
| 16
    
        ZDenis 28.05.19✎ 12:47 | 
        Проще же теперь через ТабличныйДокумент грузить. И не требует установленного офиса.     | |||
| 17
    
        88g88 28.05.19✎ 13:20 | 
        Лови
 Функция ПробаЧтения() Экспорт Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.WorkBooks.Open("Z:\Администраторы 1С\9-2018.xlsx"); Excel.Visible = 0; Excel.ActiveWindow.DisplayWorkbookTabs = 1; Excel.ActiveWindow.TabRatio = 0.6; Лист = Книга.WorkSheets(1); ВсегоСтрок = Лист.Cells.SpecialCells(11).Row;//-кол-во строк всего ВсегоКолонок = Лист.Cells.SpecialCells(11).Column;//-кол-во колонок всего Для Ячейка = 5 По ВсегоСтрок Цикл Сообщить(Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0")); Если Формат(лист.Cells(Ячейка,2).Value,"ЧЦ=11; ЧВН=; ЧГ=0") <> Неопределено тогда лист.Cells(Ячейка,3).Value = лист.Cells(Ячейка,2).Value; лист.Cells(Ячейка,4).Value = лист.Cells(Ячейка,3).Value; КонецЕсли; Конеццикла; FullName = Excel.ActiveWorkbook.FullName; Excel.DisplayAlerts = false; Excel.ActiveWorkbook.SaveAs(FullName, 51);// 18 - xls 97-2003; 51 - xlsx 2007-2013 //Excel.Visible = 1; // если нужно поработать дальше с книгой Excel.Application.Quit()// если просто выходим КонецФункции | |||
| 18
    
        ik 28.05.19✎ 13:55 | 
        Увы, ни один из предложенных вариантов не решает.
 >Проще же теперь через ТабличныйДокумент грузить. И не требует установленного офиса. Как работать с несколькими таблицами (страницами)? | |||
| 19
    
        Ns33 28.05.19✎ 14:04 | 
        Случайно файл не испорченный? Любой другой файл открывает?     | |||
| 20
    
        ZDenis 28.05.19✎ 15:03 | 
        (18) ТабличныйДокумент.Области
 или ТабличныйДокумент.Области[ИмяЛиста] или ТабличныйДокумент.Области.ИмяЛиста или ТабличныйДокумент.ПолучитьОбласть(ИмяЛиста) Выбирай на вкус | |||
| 21
    
        ik 29.05.19✎ 16:31 | 
        (20) Не знал, спасибо. Попробую.     | |||
| 22
    
        ik 30.05.19✎ 08:23 | 
        Работает.
 Возвращает ОбластьЯчеек. Возник вопрос - как определить количество строк и столбцов в области ячеек? | |||
| 23
    
        ik 30.05.19✎ 08:31 | 
        Кстати, не работает
 >ТабличныйДокумент.ПолучитьОбласть(ИмяЛиста) {(1)}: Ошибка при вызове метода контекста (ПолучитьОбласть) | |||
| 24
    
        ZDenis 30.05.19✎ 09:13 | 
        (22)     
 ОбластьФайла = ТабличныйДокумент.ПолучитьОбласть(ИмяЛиста); КолВоСтрокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоВертикали(); КолВоКолонокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоГоризонтали(); (23) {(1)}: Ошибка при вызове метода контекста (ПолучитьОбласть) Посмотри в отладчике, что у тебя в ТабличныйДокумент Я читаю файл так: ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РасширениеФайла); ТабличныйДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); | |||
| 25
    
        ZDenis 30.05.19✎ 09:16 | 
        + 24 Точнее так, я передаю с клиента на сервер сперва файл.
 ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РасширениеФайла); ДвоичныеДанные = ПолучитьИЗВременногоХранилища(АдресВременногоХранилища); ДвоичныеДанные.Записать(ИмяВременногоФайла); ТабличныйДокумент = Новый ТабличныйДокумент; Попытка ТабличныйДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; | |||
| 26
    
        breezee 30.05.19✎ 09:43 | 
        (5) + ОписаниеОшибки()     | |||
| 27
    
        palsergeich 30.05.19✎ 09:45 | 
        Зачем в 2к19 Ексель читать ком объектом, когда можно прочитать платформой?     | |||
| 28
    
        ik 30.05.19✎ 11:59 | 
        БЛИННН!
 Контекст же. ПолучитьОбласть не доступна на клиенте. Всё получилось, спасибо. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |