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