| 
    
        
     
     | 
    
  | 
Загрузка из 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 
 | 
         
        БЛИННН!
 
        Контекст же. ПолучитьОбласть не доступна на клиенте. Всё получилось, спасибо.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |