1с получить список листов excel
После манипуляции с файлом необходимо его закрыть. В противном случае он останется захваченным в системе, и мы не сможем его использовать в других приложениях.
Клиент-Серверный вариант в управляемых формах.
1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.
2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.
Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.
В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.
На выходе получаем двумерный массив, который содержит все данные указанного листа Excel
Полезные функции при работе с Excel:
Устанавливает видимость Excel при работе |
Добавление новой книги в файл Excel |
Сохранение книги Excel |
Добавление нового листа к книге |
Переименование листа |
Изменение маштаба листа |
Изменение ориентации листа |
Отступы листа |
Обращение к ячейки чтение/запись |
Обращение к области ячеек |
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой. |
Объединение ячеек |
Работа с именованными ячейками в Excel |
Удаление ячейки |
Удаление области ячеек |
Обращение к строке |
Изменение ширины колонки |
Обращение к колонке |
Удаление Строки |
Фон ячейки / области / Строки / |
Функция переводит цвет из формата RGB в формат Excel |
Управление шрифтом в ячейки/строке/области |
Р азрешает переносить по словам в ячейке |
Управление рамкой ячейки |
Устанавливаем формат ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Функция для получения ширины колонки Excel Спасибо пользователю goodwill |
Разрешить перенос слов в ячейке Спасибо пользователю roofless |
Группировки данных на листе Спасибо пользователю dr-wit, ignor |
При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.
2. Работа с Excel через ТабличныйДокумент 1С
С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.
Итак, приступим: загрузка из Excel:
1. Загружаем файл Excel в табличный документ
2. Производим манипуляции уже с ТабличнымДокументом
Давайте теперь разберем сохранение в Excel с помощью данного метода:
Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
2. Работа с Excel ADODB
Выражаю особую благодарность коллеги Fragster за хороший комментарий
Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:
- Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
- Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.
Подключение к ADO
Отключение от ADO
Выполнение запроса
Пример запроса:
Запись в Excel тоже производится в виде запроса:
Хочу отметить что наименование полей производится по первой строке в таблице
ADODB предоставляет ряд объектов, с которыми мы работаем
ADODB.Recordset
В файле продемонстрированны оба варианта работы с запросами.
На этом пока все. По возможности буду дополнять статью :)
В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.
Публикаций на тему загрузки из EXCEL - множество, но
"
— Вам билетёр нужен?
— Был нужен, да уже взяли.
— Может и я на что сгожусь?
— Может и сгодишься, если скалиться не будешь .
"
"НЕУЛОВИМЫЕ МСТИТЕЛИ" (1966).
// Конвертировать имя файла для метода "LibreOffice CALC".
//
Функция ConvertToURL ( ФайлEXCEL )
ФайлEXCEL = СтрЗаменить ( ФайлEXCEL , " " , "%20" );
ФайлEXCEL = СтрЗаменить ( ФайлEXCEL , "\" , "/" );
Возврат "file:/" + "/localhost/" + ФайлEXCEL ;
КонецФункции
// Получение списка листов файла типа XLSX средствами 1С (ЧтениеXML).
//
Функция ФайлExcelПолучитьСписокЛистов_1CXML_XLSX ( ФайлEXCEL )
Перем ZIPКаталог , WorkBook ;
Перем СписокЛистов ;
ZIPКаталог = КаталогВременныхФайлов () + "XLSX\" ;
СписокЛистов = Новый СписокЗначений ;
Файл = ПолучитьОбъектФайл ( ФайлEXCEL , Истина);
Если Файл = Неопределено Тогда
Сообщить ( "Невозможно получить список листов, т.к. невозможно открыть для чтения файл:
|" + ФайлEXCEL );
Возврат Новый СписокЗначений ;
КонецЕсли;
Если НЕ ВРег ( Файл . Расширение ) = ".XLSX" Тогда
Возврат Новый СписокЗначений ;
КонецЕсли;
WorkBook = Новый ЧтениеXML ;
WorkBook . ОткрытьФайл ( ZIPКаталог + "XL\WorkBook.xml" );
// Считать очередной узел XML.
Пока WorkBook . Прочитать () Цикл
Если НЕ ВРег ( WorkBook . Имя ) = ВРег ( "sheet" ) Тогда
Продолжить;
КонецЕсли;
// Тип текущего узла XML.
Если WorkBook . ТипУзла = ТипУзлаXML . НачалоЭлемента Тогда
// Считать очередной атрибут элемента XML.
Пока WorkBook . ПрочитатьАтрибут () Цикл
Если НЕ ВРег ( WorkBook . Имя ) = "NAME" Тогда
Продолжить;
КонецЕсли;
СписокЛистов . Добавить ( WorkBook . Значение );
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Завершение работы.
// Закрытие Объектов.
WorkBook . Закрыть ();
Возврат СписокЛистов ;
КонецФункции
Функция ПолучитьОбъектФайл (Знач ФайлEXCEL , РаспаковатьXLSX = Ложь)
Перем Файл , objFSO , objFile , XLSXРаспакован ;
Если НЕ ЗначениеЗаполнено ( ФайлEXCEL ) Тогда
Возврат Неопределено;
КонецЕсли;
Файл = Новый Файл ( ФайлEXCEL );
Если НЕ Файл . Существует () Тогда
Сообщить ( "Файл не существует:
|" + ФайлEXCEL );
Возврат Неопределено;
КонецЕсли;
// Проверка: Занят ли файл другим процессом?
objFSO = Новый COMОбъект ( "Scripting.FileSystemObject" );
Попытка
objFSO . MoveFile ( ФайлEXCEL , ФайлEXCEL );
objFile = objFSO . GetFile ( ФайлEXCEL );
Исключение
objFile = Неопределено;
objFSO = Неопределено;
Сообщить ( "Ошибка открытия файла/Файл занят другой программой:
|" + ФайлEXCEL );
Возврат Неопределено;
КонецПопытки;
objFSO = Неопределено;
Если ВРег ( Файл . Расширение ) = ".XLSX" И РаспаковатьXLSX Тогда
// Распаковка файла XLSX во временный каталог.
XLSXРаспакован = РаспаковатьXLSXвКаталогВременныхФайлов ( ФайлEXCEL );
Если НЕ XLSXРаспакован Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Возврат Файл ;
КонецФункции
Функция РаспаковатьXLSXвКаталогВременныхФайлов ( ФайлEXCEL )
Перем ZIPФайл , ZIPКаталог ;
ZIPКаталог = КаталогВременныхФайлов () + "XLSX\" ;
Попытка
УдалитьФайлы ( ZIPКаталог );
ZIPФайл = Новый ЧтениеZipФайла ;
ZIPФайл . Открыть ( ФайлEXCEL );
ZIPФайл . ИзвлечьВсе ( ZIPКаталог , РежимВосстановленияПутейФайловZIP . Восстанавливать );
Возврат Истина;
Исключение
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции
Особенности и Ограничения:
1. Для функционирования метода «Microsoft ADODB» необходимо:
2. Для функционирования метода «LibreOffice CALC» необходим установленный LibreOffice .
Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Вертикальная автофиксация для СКД 0
В СКД очень не хватает возможности автофиксации строк. Обусловлено это невозможностью однозначно определить их количество в общем случае. Однако в большинстве случаев это можно сделать Обращаю ваше внимание, что приведенная процедура работает не все Запуск кода в конфигурации из командной строки 0
Иногда возникает необходимость запуска кода в базе 1С из командной строки. Например, надо выполнять те или иные процедуры по расписанию, но при этом нет желания каждый раз менять конфигурацию, а хочется прописать все в батнике и запускать через шедул Как очистить, сократить журнал регистрации? 0
В 1С 8.х В процессе длительной эксплуатации системы в журнале регистрации может накапливаться значительное число записей. Поэтому поддерживается возможность сокращения журнала регистрации и удаления записей, ставших неактуальными. При сокращении ж Как принудительно завершить работу всех пользователей информационной базы? 1
Для этого можно воспользоваться возможностью программного доступа к серверу 1С:Предприятия 8. Нужно создать COM-коннектор и выполнить метод ConnectWorkingProcess(), который позволяет подключиться к указанному серверу. Затем следует аутентифицировать Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 14
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Экспорт и Импорт данных 1С - Microsoft Excel 12
Экспорт Процедура ОсновныеДействияФормыЭкспорт(Кнопка) - выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel с указанным именем, используя преобразование данных к типу число и типу строка; Процедура Основ Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Работа с MS Word через OLE 10
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и опис Посмотреть все в категории Работа с Microsoft Office и OpenOffice
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 14
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Универсальная функция для чтения данных из Excel в 1С 3
Иногда требуется разобрать данные из Excel в 1С. Я считаю что легче и быстрей поместить все данные в ТаблицуЗначений и уже там ими манипулировать. Пример 2-х функций которые я использую: ИзExcelВТаблицу – Читает Excel в ТаблицуЗначений ЭлементСп Пример работы с общим макетом типа ActiveDocument в клиент-серверном варианте 3
//********************************************************************************** //получаем макет на сервере, сохраняем в файл и передаем на клиента НаСервере Функция ПолучитьДанныеМакета() АдресХранилища = Новый УникальныйИдентификатор Посмотреть все в категории Работа с Microsoft Office и OpenOffice
Функции 1С. Из Excel в 1С. Получение списка листов (имен листов) из файла Excel
Импорт данных из Excel в 1С. Получение списка листов (имен листов) из Excel (xls, xlsx)
Все последние версии 1С:Предприятия имеют возможность открывать и использовать com-объекты из встроенного языка программирования 1С. Операционная система Windows и установленные в ней программы предлагают богатый набор таких объектов, в том числе интерфейсы для доступа к различным базам данных при помощи технологии ADO (ActiveX Data Objects)
Использование объектов ADO и их интерфейсов позволяет легко производить загрузку данных из Excel в 1С. В этой статье мы покажем функцию для 1С, которая считывает имена всех листов из книги Excel в 1С.
Зачем нужна функция чтения списка листов из Excel в 1С ? Дело в том, что при работе в 1С постоянно требуются данные, предоставляемые в файлах формата Excel, какие-то отчеты, прайсы и прочее, но сама 1С:Предприятие не содержит встроенных функций по импорту данных Excel.
Экспорт данных, выгрузка в Excel при помощи встроенных функций возможна - для этого используются методы объекта ТабличныйДокумент.Записать(), который позволяют записать содержимое документа в формате рабочей книги Microsoft Excel. Но вот обратного импорта, кроме ручного копирования столбцов и строк через клипборд - не предусмотрено.
Я не нашел в интернете "внятного" и универсального примера функции импорта данных из файлов Excel. Некоторые примеры имелись, но были привязаны к структуре конкретного xls-файла, с заранее известными именами листов, а так же требовали наличия установленной копии Microsoft Excel.
Для своей работы такие примеры использовали com-объект "Excel.Application", что во многих случаях просто неудобно, так как инициализация такого объекта требует больших ресурсов компьютера, да и не всегда имеется возможность купить и установить пакет Microsoft Office (в который входит Excel) на каждой машине, где это требуется.
Мы пойдем другим путем. Для получения данных их файлов Excel (при помощи ADO и драйверов OLE DB) не обязательно иметь на компьютере установленный Microsoft Excel, так как один из драйверов OLE DB позволяет интерпретировать файл Excel (а именно, рабочую книгу Excel (Workbook) - как типовую базу данных и производить с ней различные операции.
Таблицами в такой "базе данных" являются листы рабочей книги. В этой, как и в любой другой базе данных (БД), помимо манипуляции с самими данными, как таковыми, существует возможность получить некоторую информацию о структуре самой БД. Инфомацию о структуре объектов базы данных и связей между ними зачастую принято называть "схемой базы данных"
При помощи функций получения схемы БД у объекта "ADODB.Connection" мы сможем получить перечень, список листов (в терминах БД - таблиц) из файла Excel.
Ниже я привожу код функции, получающей на входе полное имя файла Excel, содержащее путь к файлу, и имя с расширением файла (*.xls, *.xlsx) и возвращающей объект-массив 1С, который в качестве своих элементов содержит строки с именами листов исходного файла. Если чтение списка листов файла не удалось, то функция возвращает значение "Неопределено"
Пояснения к функции чтения списка листов из Excel в 1С даны во встроенных комментариях в приведенном выше коде 1С. Если возникнут вопросы, то задавайте их в комментариях к статье.
Важно: Драйвер, при помощи которого мы получаем возможность работы через OLE DB с файлами Excel должен быть установлен на компьютере. Если функция не работает, скачайте и установите пакет, содержащий все необходимые компоненты (MDAC и дополнительные драйвера OLE DB) с этой страницы сайта Microsoft
Изнутри функции ФайлExcel_ПолучитьСписокЛистов() вызывается функция ФорматСтроки(). Ее текст можно посмотреть на нашем сайте - ФорматСтроки()
С уважением, Дегтярев Роман.
Как научиться программировать в 1С с нуля?
Как работать программистом 1С и получать до 150 000 рублей в месяц?
ЗАПИШИСЬ НА БЕСПЛАТНЫЙ
"ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ"
Курс придет на электронную почту. Стань программистом, выполняя пошаговые задания.
Читайте также: