Ошибка при загрузке листа

Я пытаюсь загрузить лист excel (сгенерированный другим приложением) с использованием библиотеки phpexcel со следующим кодом:

$objReader = new PHPExcel_Reader_Excel2007(); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load('callsheet.xlsx'); $objPHPExcel->setActiveSheetIndex(0); $dataArray = $objPHPExcel->getActiveSheet()->toArray(null, true,true,true); var_dump($dataArray); 

Но я получил эту ошибку.

  • PHPExcel — установить ячейки как строку при загрузке из массива
  • Добавление изображения в Excel в phpexcel в php
  • стиль копирования и данные в PHPExcel
  • PHPExcel toArray пропускает первую строку заголовка

Неустранимая ошибка: исключить исключение «PHPExcel_Exception» с сообщением «Вы пытались установить лист активным по индексу вне пределов: 0. Фактическое количество листов равно 0.» в E: xampp htdocs podioexcel Classes PHPExcel.php: 688 Трассировка стека: # 0 E: xampp htdocs podioexcel test.php (18): PHPExcel-> setActiveSheetIndex (0) # 1 {main} брошен в E: xampp htdocs podioexcel Classes PHPExcel.php в строке 688

Одна интересная вещь. когда я открываю такой же лист excel и просто сохраняю файл без каких-либо изменений. Чем этот код работает нормально, но проблема в том, что я не буду открывать файл каждый раз, прежде чем его использовать. Не могли бы вы помочь мне решить эту проблему.

Google Sheet IMPORTRANGE Ошибка «Внутренняя ошибка диапазона импорта», когда диапазон представляет собой просто столбец

«Внутренняя ошибка диапазона импорта».

=IMPORTRANGE(«https://docs.google.com/spreadsheets/d/1-bCoiKLjBlM5IGRo9wrdm», «sheet1!B:C») , работает.

Это ошибка? до сих пор это был третий раз, когда мне приходилось менять их много раз? Есть ли какое-нибудь последовательное решение для этого? Я использую это решение временно

5 ответов

Это не могло быть решением проблемы. Я построил целую платформу интеграции данных на листах и ​​сильно полагаюсь на функциональность importrange для защиты доступа к источникам данных от пользователей. Теперь в последнее время #REF начал преследовать мои столы повсюду, и он делает все более или менее непригодным для использования.

Однозначно это ошибка или нехватка ресурсов.

Я думаю, что лучшим решением здесь будет использовать

Я не верю, что уклонение от кеша Google — это исправление или даже обходной путь.

Мы поддерживаем лист с функцией importrange на нескольких вкладках в течение многих лет, и только в течение последней недели возникла проблема.

Мы впервые заметили это в пятницу, а сегодня снова вернулись. В обоих случаях я не думаю, что сделал что-либо, чтобы исправить проблему, особенно сегодня. Я переместил формулу по листу, что привело к обновлению функции importrange, но это все равно привело к «внутренней ошибке диапазона импорта». Функция importrange отключилась на время (я не знаю, сколько сегодня, но я думаю, что это было не менее 15 минут), а затем разрешилась на всех вкладках без изменений.

Я думаю, что это определенно ошибка или Google возится с вещами на сервере. Может, нам нужно найти способ сделать все без использования importrange?

Эти ошибки обычно временные и проходят через несколько часов. Чтобы ускорить это, немного измените формулу импорта, заменив «sheet1!B:B» на «sheet1!B:b» — изменения регистра строчных букв достаточно, чтобы позволить вызову утилизировать кеш Google и получить свежие результаты, что должно позволить вам обойти проблему. .

В дополнение к двойному ответу вы также должны ограничить свой диапазон, чтобы не было большого количества мертвых строк. Так что что-то вроде B:B5000 вместо B:B .

у нас есть несколько листов, которые полагаются на importrange для получения данных из других листов Google, начиная с этой недели у нас возникли проблемы с загрузкой некоторых из них, мы просто получаем внутреннюю ошибку #ref import range.

Я пробовал множество решений, но все они, похоже, работают только временно, после чего при обновлении запроса иногда удается получить данные, размер диапазона не является проблемой, поскольку проблема возникает как при большом импорте, так и при импорте. которые получают только 1 ячейку.

пока лучшее решение, которое у меня есть, это удалить = из формулы, а затем добавить его обратно, чтобы снова загрузить данные, однако это длится всего около 30 минут, прежде чем importrange возвращается к той же ошибке.

в формулах нет ничего необычного

Я пробовал варианты заглавных букв для диапазонов, а также добавлял, если ошибка, чтобы попытаться загрузить вариант формулы

но, похоже, ничего не работает, а когда работает, решение не прилипает.

будем очень признательны за любую помощь или понимание того, что может быть причиной этой проблемы.

Как обойти ошибку IMPORTRANGE: «Результаты слишком велики»?

Я пытаюсь IMPORTRANGE из диапазона, содержащего 240 000 ячеек (40 столбцов и 6000 строк). Функция IMPORTRANGE ошибочна: «Результаты слишком велики». Я не могу найти документацию о ограничениях функции.

Каковы ограничения IMPORTRANGE?

Как мне обойти это, чтобы я мог импортировать эти данные в свой листок?

4 ответа

У меня тоже была аналогичная проблема.

Попробуйте разделить диапазон импорта с помощью формулы массива.

Протестируйте это с помощью разных размеров данных, чтобы получить самую короткую версию, и вы можете делать то, что вам нужно.

Пустые клетки могут иметь значение. Мы наблюдали нарушение импорта в ячейках 23573×11 или 259k, типичный рост составлял около 10 рядов ежедневно, поэтому мы некоторое время находились в ячейках более 250 тысяч. Один столбец в основном пустой, у пары других есть несколько пробелов.

Я не мог заставить ARRAYFORMULA разобрать, как показано выше, или с другими догадками, поэтому я использовал это на своей скрытой вкладке «Ingest».

=importrange(«sheet», «A1:K10000») в ячейке A1
=importrange(«sheet», «A10001:K») в ячейке A10001

В моей рабочей /презентационной вкладке используется

, чтобы обеспечить постоянное форматирование, наши исходные листы перезаписываются ежедневно.

Используя ответ Сэма и документацию для чтения, я нашел способ получить результат BIG DATA без ошибок. Для этого вам нужно сделать шаг за шагом. В одном запросе. Например, если вам нужно экспортировать данные sheet!A3:X100000 .

Попробуйте сделать следующее: сначала сделайте запрос и выберите только

после получения результата просто отредактируйте запрос из

после получения данных снова отредактировать запрос

и продолжайте, пока вы не будете богаты

таким образом я мог бы импортировать около 800 000 ячеек с данными. Для моей задачи этого было достаточно, но я думаю, что если мне нужны более длинные данные результата, я мог бы продолжить, и он будет работать.

Вы также должны помнить, что таблицы Google имеют ограничение на один максимум документа, может содержать только 2 миллиона ячеек.

Из моего опыта использования IMPORTRANGE количество ячеек не было причиной вообще, но в любое время, когда я превысил 36 столбцов, это не получилось. Мои результаты могут составлять 600 строк или 6000 строк, если я не превысил 36 столбцов. По иронии судьбы вы можете обойти это, объединив функции IMPORTRANGE.

Обратите внимание на фигурные скобки , используемые до и после двух функций IMPORTRANGE

Приложения Office можно использовать для создания сложных таблиц, красивых документов и интересных презентаций. Пользователи имеют доступ к большому количеству инструментов дизайна в соответствующих приложениях Office, которые они могут использовать для создания собственного макета и дизайна.

Разработка документов, презентаций и т. Д. Занимает много времени, и вам нужно некоторое базовое понимание самих принципов дизайна, чтобы создать красивый документ / презентацию / брошюру / и т. Д. Если у вас нет времени создавать что-то самостоятельно, вы можете скачать шаблон.

Шаблоны Microsoft Office

Microsoft Office имеет обширную библиотеку шаблонов, доступных для его приложений. Некоторые часто используемые и популярные шаблоны уже загружены при установке Microsoft Office, но другие, представленные на экране «Новый файл», можно загрузить непосредственно из приложения Office.

Шаблоны довольно малы по размеру и загружаются за секунды (или минуты), но иногда загрузка может завершиться ошибкой. Если это так, вы увидите сообщение «Исправьте ошибку при загрузке вашего шаблона».

Ошибка «Что-то пошло не так при загрузке вашего шаблона» (FIX)

Выполните эти базовые проверки, а затем попробуйте исправления, перечисленные ниже.

Убедитесь, что вы подключены к Интернету.
Убедитесь, что вы вошли в приложение Office.
Запустите Office с правами администратора и попробуйте скачать шаблон.

1. Скачивание шаблонов напрямую

Если вы не можете загрузить шаблон Office из приложения Office, самая простая и надежная альтернатива — загрузить его прямо из библиотеки шаблонов Microsoft.

Посетить Библиотека шаблонов Microsoft Office в вашем браузере.
Прокрутите вниз и выберите приложение, для которого хотите загрузить шаблон.
Найдите шаблон, который хотите использовать, и выберите его.
Щелкните Загрузить и используйте свой шаблон, переместив его в папку с шаблоном.

2. Ремонтный офис

Предыдущее решение предоставит вам шаблон, который вы хотите использовать, но не решит проблему в приложении Office. Для этого попробуйте восстановить Office.

Откройте Панель управления.
Перейдите в «Программы»> «Удалить программу».
Выберите Office или Microsoft 365 и нажмите кнопку «Изменить» вверху.
Восстановите установку и перезапустите систему.
Проверьте, можно ли скачать шаблоны.

3. Установите обновления Office.

Если вам не удается загрузить шаблоны из приложений Office, это может быть связано с тем, что в ваших приложениях Office не установлены последние обновления. Чтобы обновить их, выполните следующие действия.

Откройте приложение «Настройки» с помощью сочетания клавиш Win + I.
Перейдите в раздел «Обновление и безопасность».
Выберите вкладку Центр обновления Windows и нажмите Проверить наличие обновлений.
Проверьте, есть ли в списке доступных обновлений обновления для Office.
Скачайте и установите обновления.
Перезагрузите систему и попробуйте загрузить шаблоны.

4. Удалите обновление.

Незавершенное обновление для Microsoft 365 может вызвать проблемы с загрузкой шаблонов, но установленное обновление может сделать то же самое. Все сводится к отдельным обновлениям и к тому, сломаны они или нет. Если загрузка шаблонов внезапно перестала работать, это может быть связано с недавно установленным обновлением, и вам придется его удалить.

Откройте Панель управления.
Перейдите в «Программы»> «Удалить программу».
Щелкните Просмотр установленных обновлений в столбце слева.
Найдите обновления Office и выберите самое последнее.
Нажмите кнопку Удалить вверху.
После удаления обновления перезагрузите систему и попробуйте загрузить шаблоны.

5. Удалите Visio Viewer.

Пользователи, у которых установлен Visio Viewer, жаловались на невозможность загрузки шаблонов. Удаление приложения в некоторых случаях решает проблему.

Откройте Панель управления.
Перейдите в «Программы»> «Удалить программу».
Выберите Visio Viewer и нажмите Удалить вверху.
Перезагрузите систему.

6. Включите доступ в Интернет в Office.

Office разрешен доступ к онлайн-контенту. Этот параметр может влиять или не мешать шаблонам, которые вы пытаетесь загрузить.

Откройте приложение Office, в котором вы пытаетесь загрузить шаблоны.
Перейдите в Файл> Параметры.
Выберите вкладку Центр управления безопасностью.
Нажмите кнопку Настройки центра управления безопасностью.
Перейдите в Параметры конфиденциальности и щелкните Параметры конфиденциальности.
Включите «Разрешить Office подключаться к Интернету», если он отключен, или отключите его, если он включен.
Перезапустите приложение и попробуйте загрузить шаблоны.

Ошибки шаблонов MS Office: заключение

Шаблоны можно загрузить прямо из библиотеки Microsoft, но их установка немного утомительна. Пользователи должны вручную переместить их в правильную папку шаблонов.

Встроенная опция загрузки шаблонов исключает ручную часть уравнения, поэтому важно ее исправить.

   falselight

27.04.20 — 05:05

Подскажите пожалуйста, в чем может быть ошибка, открытия .xls листа?

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

Выходит сообщение об ошибке, —

Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!

{ВнешняяОбработка.LOADxls.Форма.Форма.Форма(18)}: Ошибка при вызове конструктора (COMОбъект): -2147220994(0x800401FE): Приложение было запущено, но оно не зарегистрировало фабрику классов

   falselight

1 — 27.04.20 — 05:20

Ошибка, на этой строке.

Excel = Новый COMОбъект(«Excel.Application»);

Запустил другой конфигуратор. Там такой ошибки нет.

   falselight

2 — 27.04.20 — 05:39

Может что известное. Хотел узнать.

Пока работаю под другим конфигуратором.

   Василий Алибабаевич

3 — 27.04.20 — 08:00

(0)

1. Если все расположено на клиентской машине — нужно установить нормальный Excel.

2. Если на сервере — п. 1 и проверить права пользователя ОС на создание COM объектов.

   SleepyHead

4 — 27.04.20 — 08:37

(0) А что, читать через табличный документ уже нельзя?

   falselight

5 — 27.04.20 — 11:01

(3) (4) Дело в том что не работает на одной из версий платформы. На которой я начал делать.

Вот и не понял. Открыл другую, так как не давно пробовал делать тоже самое. и там так же.

В начале же нужно прочитать с Эксель. Вот с него не читалось.

   H A D G E H O G s

6 — 27.04.20 — 11:23

ЛивингСтар, ты ли это?

   SleepyHead

7 — 27.04.20 — 11:27

(5) Ты вообще понял, что написано в (4)?

Читай через табличный документ,а  не ком-объект. И будет тебе счастье.

   ChMikle

8 — 27.04.20 — 14:17

(0) База какая SQL или файловая и где выполняется >>Excel = Новый COMОбъект(«Excel.Application»); в процедуре

&НаКлиенте или &НаСервере ?

   Ram_zes

9 — 27.04.20 — 14:20

(0) считай это дерьмо через табличный документ

   Ram_zes

10 — 27.04.20 — 14:21

(0) и да

Тут рука профи нужна.

zmb@list.ru

Загрузка файла будет 1500 на карту стоить. Предоплата 100%.

   falselight

11 — 27.04.20 — 16:39

(4) Да как то привык так вот эксель открывать при загрузке с него.

А не копировать и вставлять в табличный документ.

   falselight

12 — 27.04.20 — 16:40

(8) На сервере конечно, как обычно.

&НаСервере

Функция СоздатьТЗсXLSЛистов(Файл)

    Таблица = Новый ТаблицаЗначений;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

    Попытка

        Excel.Sheets(1).Select();  

    Исключение

        Excel.ActiveWorkbook.Close();     

        Excel = 0;

        Сообщить(«Файл » + Строка(Файл)+» не соответствует необходимому формату! Первый лист не найден!»);

        ОтменитьТранзакцию();

        Возврат 0;

   falselight

13 — 27.04.20 — 16:40

(8) В данный момент файловая.

   falselight

14 — 27.04.20 — 16:42

(10) А как вы сообщение отредактировали свое????

   ChMikle

15 — 27.04.20 — 16:43

(12) Попробуйте создать процедуру  &НаКлиенте и в процедуре открыть файл . Кстати Ексель стоит на компе, где пытаетесь  файл считать.

&НаКлиенте процедура()

  Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

   falselight

16 — 27.04.20 — 17:13

(15) Тут вопрос был, почему под одной платформой не работает.

Идет ошибка что в (0). А под другой работает.

Я этого не мог понять. Может что с платформой.

Попробую ваш совет.

А ещё на сервере такой метод может не сработать, вроде как была как то у меня информация. Там как то иначе нужно.

Может это вот этот ваш совет про это. Я там встретился с тем что на сервере. делают копированием в табличный документ.

   ChMikle

17 — 27.04.20 — 17:52

(16) Вы можете на клиенте в таблицу значений считать данные екселя и отдать ее на сервер выполнять дальнейшие манипуляции.

   Cthulhu

18 — 27.04.20 — 18:07

(17): на клиенте бывает (штатно) таблицазначений? и она норм сериализуется при передаче на сервер???

   Timon1405

19 — 27.04.20 — 18:16

   Cthulhu

20 — 27.04.20 — 18:46

(19): метод «Прочитать» для таб.документов появился совсем недавно (в 15-м что ли релизе?)

ну и там (по ссылке) в принципе в коде не учтено, что книга читается в таб.документ с областями, имена которых совпадают с именами листов книги….

   Cthulhu

21 — 27.04.20 — 18:48

(10): опс. пардон, ялох…

просто на практике недавно нарвался, что «прочитать» нормально работал на 15-м — и при этом напрочь отказывался на 14-м… пардон, про «недавно№ не читайте, по ссылке на 9-м проверено…

   falselight

22 — 28.04.20 — 10:00

В файловой базе загрузка прошла успешно.

Сейчас перенес на сервер. На удаленный рабочий стол, там не работает. Ошибка http://joxi.ru/823qePbHDq86wr

тут нужно делать как в (19) или (15) или (4) советуют?

Ошибка при загрузке http://joxi.ru/KAx3R4VT1LKM62

и http://joxi.ru/823qePbHDq86wr

   falselight

23 — 28.04.20 — 10:02

Ошибка на Колонки, на какие то из этих процедур видимо

&НаСервере

Функция СоздатьТЗсXLSЛистов(Файл)

    Таблица = Новый ТаблицаЗначений;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(Файл);

    Исключение

        Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);

        Сообщить(ОписаниеОшибки());

        Возврат 0;

    КонецПопытки;

    Попытка

        Excel.Sheets(1).Select();  

    Исключение

        Excel.ActiveWorkbook.Close();     

        Excel = 0;

        Сообщить(«Файл » + Строка(Файл)+» не соответствует необходимому формату! Первый лист не найден!»);

        ОтменитьТранзакцию();

        Возврат 0;

    КонецПопытки;    

    Версия = Лев(Excel.Version,Найти(Excel.Version, «.») — 1);

    Если Версия = «8» тогда

        ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;

        ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);

    Иначе

        ФайлСтрок   = Excel.Cells(1, 1).SpecialCells(11).Row;

        ФайлКолонок = Excel.Cells(1, 1).SpecialCells(11).Column;  

    Конецесли;

    Сч = 1;    

    //

    Таблица.Колонки.Добавить(«НоваяСтрока», ,»НоваяСтрока»);

    //

    Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл

        ИмяКолонки        = Excel.Cells(1, Сч).Text;

        //

        ИмяБезПробелов = СтрЗаменить(ИмяКолонки, » «, «»);     //

        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов, «(«, «»); //

        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов, «)», «»); //

        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов, «.», «»); //

        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов, «,», «»); //

        //

        ИмяКолонки     = СтрЗаменить(ИмяКолонки, » «, «»); //

        ИмяКолонки     = СтрЗаменить(ИмяКолонки, «(«, «»); //

        ИмяКолонки     = СтрЗаменить(ИмяКолонки, «)», «»); //

        ИмяКолонки     = СтрЗаменить(ИмяКолонки, «.», «»); //

        ИмяКолонки     = СтрЗаменить(ИмяКолонки, «,», «»); //

        //

        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов,»/»,»»);

        ИмяКолонки     = СтрЗаменить(ИмяКолонки,»/»,»»);

        НоваяКолонка   = Таблица.Колонки.Добавить(ИмяБезПробелов, ,ИмяКолонки);

        Сч                = Сч + 1;

    КонецЦикла;

    НомерСтроки = 1;

    Для НС = 2 по ФайлСтрок Цикл  

        НоваяСтрока                = Таблица.Добавить();        

        //

        НоваяСтрока[«НоваяСтрока»] = НомерСтроки;            

        //

        Для НомерКолонки = 1 по Таблица.Колонки.Количество()-1 Цикл

            ТекущееЗначение         = Excel.Cells(НС, НомерКолонки).Text;

            ИмяКолонки                = Таблица.Колонки[НомерКолонки].Имя;             

            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;            

        КонецЦикла;

        НомерСтроки = НомерСтроки + 1;

    КонецЦикла;  

    //

    Excel.DisplayAlerts = 0;

    Excel.ActiveWorkbook.Close();

    Excel.Quit();

    Excel.DisplayAlerts = 1;

    //

    Возврат Таблица;

КонецФункции

//

&НаСервере

Процедура СоздатьТаблицуНаФорме(ТзДляСоздания)

    //

    Таблица          = РеквизитФормыВЗначение(«Товары»);

    МассивРеквизитов = Новый Массив;

    Для Каждого Колонка Из Таблица.Колонки Цикл

        МассивРеквизитов.Добавить(«Товары.» + Колонка.Имя);      

    КонецЦикла;

    //

    ИзменитьРеквизиты(,МассивРеквизитов);

    //

    ЭлементТаблица = Элементы.Найти(«Товары»);

    Если ЭлементТаблица <> Неопределено Тогда

        Элементы.Удалить(ЭлементТаблица);      

    КонецЕсли;    

    //

    ЭлементТаблица             = Элементы.Добавить(«Товары», Тип(«ТаблицаФормы»), Элементы.Группа7);

    ЭлементТаблица.ПутьКДанным = «Товары»;

    ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;  

    //

    МассивРеквизитов.Очистить();

    Для Каждого Колонка ИЗ ТзДляСоздания.Колонки Цикл

        МассивТипов = Новый Массив;

        МассивТипов.Добавить(Колонка.ТипЗначения);

        НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), «Товары»);

        МассивРеквизитов.Добавить(НоваяКолонка);

    КонецЦикла;

    //

    ИзменитьРеквизиты(МассивРеквизитов);

    ЗначениеВРеквизитФормы(ТзДляСоздания, «Товары»);

    //

    ЭлементТЗ = Элементы.Товары;

    Для Каждого Колонка ИЗ ТзДляСоздания.Колонки Цикл

        НовыйЭлементФормы             = Элементы.Добавить(«Товары» + Колонка.Имя, Тип(«ПолеФормы»), ЭлементТЗ);

        НовыйЭлементФормы.Вид         = ВидПоляФормы.ПолеВвода;

        НовыйЭлементФормы.ПутьКДанным = «Товары.» + Колонка.Имя;

    КонецЦикла;

КонецПроцедуры

//

   ChMikle

24 — 28.04.20 — 10:26

(22) с правами на доступ к екселю (или он вообще не установлен на компе гдк стоит сервер 1С) у пользователя под которым запущен сервер 1С

   falselight

25 — 28.04.20 — 10:47

(24) Эксель стоит. Открывается. Видимо там принцип работы какой то другой. Отличный от того что выполняется в файловой версии на персональном компьютере.

   falselight

26 — 28.04.20 — 10:50

(25) Принцип обработки файла кодом из 1с, я имею ввиду

   ChMikle

27 — 28.04.20 — 10:51

(25) когда в серверной версии вы на сервере запускаете работу с екселем, то создается сом объект на компе где стоит сервер 1С и под правами пользователя , под которыми он запущен.

   ChMikle

28 — 28.04.20 — 10:53

+(27) 1Ссервер м.б. запущен не под тем пользователем, под которым вы заходите для проверки прав доступа к екселю

   falselight

29 — 28.04.20 — 11:01

(28) Да на этом сервере у меня органиченные права. то есть получается этот код не отработает там?

Как можно выйти из положения?

   falselight

30 — 28.04.20 — 11:05

(17) &НаКлиенте не доступна     Таблица = Новый ТаблицаЗначений;

   ChMikle

31 — 28.04.20 — 11:06

(29) администратор системного подключать и проверять права именно на доступ к екселю под пользователем , под которым сервер 1С  запущен

(30) К екселю подключается из под разных платформ ?

   ChMikle

32 — 28.04.20 — 11:15

(30) на форме создайте элемент ТаблицаЗначений , колонки добавьте и потом перебором переписывайте

   falselight

33 — 28.04.20 — 11:25

(31) На сервере под удаленным рабочим столом одна платформа.

(32) И на сервере не работает отладка, не посмотрю как выполняется код. Одно видно что ругается на Колонки сначала (22) .

   falselight

34 — 28.04.20 — 11:40

(32) А как мне эксель то открыть?

   falselight

35 — 28.04.20 — 12:56

Проверил, да, на клиенте может эксель открыть. Почему тогда такая проблема, не совсем пойму, из за чего.

   ikea

36 — 28.04.20 — 13:10

(35) А как файл Excel на сервер с клиента передается? Через временное хранилище?

   МимохожийОднако

37 — 28.04.20 — 13:18

Повторюсь. Не надо СОМ. Используй чтение в табличный документ из файла методами 1С.

   Cthulhu

38 — 28.04.20 — 13:29

если уж так хоццца через com

попробуй включи пользователя, под которым запускается сервер приложений 1С Предприятия 8,  в группу Distributed COM Users — если не поможет, то дополнительно включить его в группу локальных администраторов.

(о результате — отпишись?)

   Cthulhu

39 — 28.04.20 — 13:31

(36): тогда бы ошибка была про файл. который не найден —  не на этапе создания com-объекта, а при открытии файла….

   Cthulhu

40 — 28.04.20 — 13:33

   falselight

41 — 28.04.20 — 13:39

(37) Буду пробовать сейчас этот вариант.

Ещё раз. спасибо за мотивацию.

   falselight

42 — 28.04.20 — 16:00

После того как с табличного документа я заполню &НаСервере таблицу значений,

где мне заполнять табличную часть на форме обработки? &НаКлиенте или на &НаСервере ?

А то утомился, подумал спрошу дельный совет. С табличного документа, я заполнил таблицу значений на сервере. Дальше?

Что бы на форме заполнить.

Что бы это все работало на удаленном рабочем столе, на сервере в базе ms sql server.

   Фрэнки

43 — 28.04.20 — 16:09

(42) Так ты на Сервере заполняй сразу в Объект, который из реквизита формы в значение получен. А затем обратно из значения в реквизит формы

у тебя что нет типовой? там же есть такое уже готовое, что подсмотреть можно.

   falselight

44 — 28.04.20 — 16:15

(43) Буду сейчас пробовать!

   falselight

45 — 28.04.20 — 16:15

(43) То есть сама таблица значений что есть у обработки, и положена на форму обработки для визуального отображения не доступна &НаСервере ?

   H A D G E H O G s

46 — 28.04.20 — 16:17

Ахахаха, жесть жестяночка.

   Cthulhu

47 — 28.04.20 — 16:19

(45): во-первых, реквизит №тз» и объект «тз» — это две большие разницы.

ну и во-вторых — а вы попробуйте эту «тз» передать в параметре на сервер… а потом расскажите…

(46) ага. :)))

   falselight

48 — 28.04.20 — 16:21

Смысл в том, что получив таблицу значений с эксель

хочу вывести это на форму. Вот и узнаю что бы без проб, как сразу правильно делать?

http://joxi.ru/RmznO4eiRZ5wVm

Намек хотя бы.

   Фрэнки

49 — 28.04.20 — 16:27

(48) такая ТЗ, как у тебя на картинке видна = реквизит формы. Поэтому нужно через

ТекущийОбъект = РеквизитФормыВЗначение(«Книги»);

ЗдесьПишемСвойКодЗаполнения(ТекущийОбъект);

ЗначениеВРеквизитФормы(ТекущийОбъект, «Книги»);



тогда увидишь свою заполненную тз на форме

   ChMikle

50 — 28.04.20 — 17:01

(48) делал загрузку с формы, поищу обработку , если найду вышлю

   МимохожийОднако

51 — 28.04.20 — 17:12

(48) достаточно поместить табличное поле на форму, связанную с прочитанной таблицей. Посмотри типовую обработку по загрузке данных из табличного документа.

   ChMikle

52 — 28.04.20 — 17:29

Куда выслать обработку ?

   falselight

53 — 29.04.20 — 04:04

(52) Спасибо. Я сам делаю тут. Все равно по загрузке свои особенности.

Или вы тоже грузили в УТ 11.4

Вес товара с упаковкой (г), г    

Высота предмета, см    

Высота упаковки, см    

Глубина предмета, см    

Глубина упаковки, см    

Ширина предмета, см    

Ширина упаковки, см

   falselight

54 — 29.04.20 — 04:35

(52) Ну, а если есть интересные какие примеры. Можно сюда. MyRezume2020@yandex.ru

  

falselight

55 — 29.04.20 — 04:59

На сервере удалось прочитать, вот таким кодом.

Сейчас уже и дальше можно обрабатывать.

//

&НаКлиенте

Процедура ФайлДляЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    СтандартнаяОбработка = ложь;

    ВыбратьФайл(«ФайлДляЗагрузки»);

КонецПроцедуры

//

&НаКлиенте

Процедура ВыбратьФайл(ФайлДляЗагрузки)

    #Если ВебКлиент Тогда

    Результат = ПодключитьРасширениеРаботыСФайлами();

    Если Не Результат Тогда

        УстановитьРасширениеРаботыСФайлами();

        Если Не ПодключитьРасширениеРаботыСФайлами() Тогда

            ВызватьИсключение «Ошибка. Ваш браузер не поддерживает работу с файлами.»;

        КонецЕсли;

    КонецЕсли;

    #КонецЕсли

    Диалог                         = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    Диалог.Заголовок             = «Выберите файл»;

    Диалог.ПолноеИмяФайла         = «»;

    Диалог.МножественныйВыбор     = Ложь;

    Диалог.Фильтр               = «Документ Excel (*.xls, *.xlsx)|*.xls;*.xlsx|»;

    Оповещение                  = Новый ОписаниеОповещения(«ОповещениеПослеВыбораФайлаДляОткрытия», ЭтотОбъект, ФайлДляЗагрузки);    

    Диалог.Показать(Оповещение);

КонецПроцедуры

//

&НаКлиенте

Процедура ОповещениеПослеВыбораФайлаДляОткрытия(ВыбранныеФайлы, ДопПараметры) Экспорт

    Если ТипЗнч(ВыбранныеФайлы) = Тип(«Массив»)    Тогда

        Объект[ДопПараметры] = ВыбранныеФайлы[0];

    КонецЕсли;

КонецПроцедуры

//

&НаКлиенте

Процедура Прочитать(Команда)

    Если Не ЗначениеЗаполнено(Объект.ФайлДляЗагрузки) Тогда

        Сообщить(«Не указан файл. Обработка не выполнена.»);

        Возврат;

    КонецЕсли;    

    ВыбФайл = Новый Файл(Объект.ФайлДляЗагрузки);

    Если Не ВыбФайл.Существует() Тогда

        Сообщить(«Файл не существует!»);

        Возврат;

    КонецЕсли;  

    ТДВыгрузка = Новый ТабличныйДокумент;

    мПрочитатьТабличныйДокументИзExcel(ТДВыгрузка, Объект.ФайлДляЗагрузки, 1);

    ПрочитатьНаСервере(ТДВыгрузка);

КонецПроцедуры

//

&НаКлиенте

Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт

    xlLastCell = 11;

    ВыбФайл    = Новый Файл(ИмяФайла);

    Если НЕ ВыбФайл.Существует() Тогда

        Сообщить(«Файл не существует!»);

        Возврат Ложь;

    КонецЕсли;

    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

        Excel.WorkBooks.Open(ИмяФайла);

        ExcelЛист = Excel.Sheets(НомерЛистаExcel);

    Исключение

        Сообщить(«Ошибка. Возможно неверно указан номер листа книги Excel.»);

        Возврат Ложь;

    КонецПопытки;

    SpecialCells = Excel.Sheets(НомерЛистаExcel).Cells.SpecialCells(11);

    RowCount     = SpecialCells.Row;

    ColumnCount  = SpecialCells.Column;

    Для Column = 1 По ColumnCount Цикл

        ТабличныйДокумент.Область(«C» + Формат(Column, «ЧГ=»)).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;

    КонецЦикла;

    Для Row = 1 По RowCount Цикл

        Для Column = 1 По ColumnCount Цикл

            Если ТипЗнч(ExcelЛист.Cells(Row,Column).Value) = Тип(«Число») Тогда

                ЗначениеЗамена = СтрЗаменить(ExcelЛист.Cells(Row,Column).Value, » «, «»);

            Иначе

                ЗначениеЗамена = ExcelЛист.Cells(Row,Column).Value

            КонецЕсли;    

            ТабличныйДокумент.Область(«R» + Формат(Row, «ЧГ=») +»C» + Формат(Column, «ЧГ=»)).Текст = ЗначениеЗамена;

        КонецЦикла;

    КонецЦикла;

    Excel.WorkBooks.Close();

    Excel = 0;

    Возврат Истина;

КонецФункции //

//

&НаСервере

Процедура ПрочитатьНаСервере(Макет)

    ТЗсXLS = Новый ТаблицаЗначений;

    ТЗсXLS.Колонки.Добавить(«», Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«OzonID»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Баркод»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Наименование»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Автор»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Год»,                    Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Издательство»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Артикул»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Комплектация»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВесТовараСУпаковкой», Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВысотаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ВысотаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ГлубинаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ГлубинаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ШиринаПредмета»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«ШиринаУпаковки»,        Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Количество»,            Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«Цена»,                Новый ОписаниеТипов(«Строка»));

    ТЗсXLS.Колонки.Добавить(«НомерСтроки»,           Новый ОписаниеТипов(«Строка»));

    //

    Для Стр = 2 По Макет.ВысотаТаблицы Цикл

        НоваяСтрока                     = ТЗсXLS.Добавить();        

        НоваяСтрока.OzonID                 = СокрЛП(Макет.Область(Стр, 1).Текст);

        НоваяСтрока.Баркод                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Наименование         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Автор                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Год                 = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Издательство         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Артикул             = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Комплектация         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВесТовараСУпаковкой = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВысотаПредмета         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ВысотаУпаковки         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ГлубинаПредмета     = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ГлубинаУпаковки     = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ШиринаПредмета         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.ШиринаУпаковки         = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Количество             = СокрЛП(Макет.Область(Стр, 2).Текст);

        НоваяСтрока.Цена                 = СокрЛП(Макет.Область(Стр, 2).Текст);        

        НоваяСтрока.НомерСтроки         = Стр;

    КонецЦикла;

    //

    ТзКнигиНаФорме = РеквизитФормыВЗначение(«Книги»);

    Для Каждого СтрТЗсXLS Из ТЗсXLS Цикл

        НоваяСтрока                     = ТзКнигиНаФорме.Добавить();        

        НоваяСтрока.НомерСтроки         = СокрЛП(СтрТЗсXLS.НомерСтроки-1);        

        НоваяСтрока.OzonID                 = СокрЛП(СтрТЗсXLS.OzonID);

        НоваяСтрока.Баркод                 = СокрЛП(СтрТЗсXLS.Баркод);

        НоваяСтрока.Наименование         = СокрЛП(СтрТЗсXLS.Наименование);

        НоваяСтрока.Автор                 = СокрЛП(СтрТЗсXLS.Автор);

        НоваяСтрока.Год                 = СокрЛП(СтрТЗсXLS.Год);

        НоваяСтрока.Издательство         = СокрЛП(СтрТЗсXLS.Издательство);

        НоваяСтрока.Артикул             = СокрЛП(СтрТЗсXLS.Артикул);

        НоваяСтрока.Комплектация         = СокрЛП(СтрТЗсXLS.Комплектация);

        НоваяСтрока.ВесТовараСУпаковкой = СокрЛП(СтрТЗсXLS.ВесТовараСУпаковкой);

        НоваяСтрока.ВысотаПредмета         = СокрЛП(СтрТЗсXLS.ВысотаПредмета);

        НоваяСтрока.ВысотаУпаковки         = СокрЛП(СтрТЗсXLS.ВысотаУпаковки);

        НоваяСтрока.ГлубинаПредмета     = СокрЛП(СтрТЗсXLS.ГлубинаПредмета);

        НоваяСтрока.ГлубинаУпаковки     = СокрЛП(СтрТЗсXLS.ГлубинаУпаковки);

        НоваяСтрока.ШиринаПредмета         = СокрЛП(СтрТЗсXLS.ШиринаПредмета);

        НоваяСтрока.ШиринаУпаковки         = СокрЛП(СтрТЗсXLS.ШиринаУпаковки);

        НоваяСтрока.Количество             = СокрЛП(СтрТЗсXLS.Количество);

        НоваяСтрока.Цена                 = СокрЛП(СтрТЗсXLS.Цена);        

    КонецЦикла;

    ЗначениеВРеквизитФормы(ТзКнигиНаФорме, «Книги»);    

КонецПроцедуры

//

Ошибка SSIS при загрузке листа Excel в таблицу - ошибка OLEDB

Я пытаюсь создать задачу потока данных, которая переносит данные из файла Excel в таблицу SQL. Я делаю это в SQL Server Data Tools для Visual Studio 2012 в виде пакета SSIS. Однако, когда я запускаю задачу, я получаю сообщение об ошибке ниже:

Полное сообщение об ошибке:

НАЗВАНИЕ: Microsoft Visual Studio

Exception from HRESULT: 0xC02020E8
Error at Import Leads DM Forecast CPPs prep [Excel Source [579]]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.

Error at Import Leads DM Forecast CPPs prep [Excel Source [579]]: Opening a rowset for "CPPs$" failed. Check that the object exists in the database.

КНОПКИ:

ОК

некоторый обзор: у меня есть файл .xlsx и в нем есть несколько вкладок. Но мне нужно прочитать только один лист, где я использую режим доступа к данным: таблица или представление и указав имя листа Excel как CPPs $. (имя листа — CPP)
Я получаю этот файл раз в год.
в листе Excel у меня есть 4 столбца, и у них есть фильтр для каждого столбца. В столбце A есть данные ммгггг.
Я не уверен, где я ошибаюсь при загрузке ДАННЫХ Excel В ТАБЛИЦУ.

Не могли бы вы помочь?

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка при загрузке линукс минт
  • Ошибка при загрузке лаунчера код 37 вайм ворлд
  • Ошибка при загрузке лаунчера код 37 vimeworld
  • Ошибка при загрузке кэша

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии