Соединение Excel с MySQL / Песочница / Хабр
На работе встретился с такой задачей «Надо сделать отчет, который брал бы данные из MySQL и закидывал его в таблицу Excel».Ну вот я сейчас и опишу процесс конекта.
Есть:
1. Сервер MySQL
2. База данных на MySQL
3. Microsoft Excel 2010
Начнем:
1. Самое первое что нужно сделать, это установить MySQL Connector, актуальную версию можно скачать здесь
2. Нужно создать источник данных, идем вот сюда Панель управления — Администрирование — Источники данных (ODBC)
2.1. Вкладка Пользовательский DSN — Добавить — MySQL ODBC 5.1 Driver (должен появиться после манипуляций с п.1)
2.2. Откроется окно настройки источника, там в поле Data Source Name нужно написать имя сервера MySQL, порт оставляем стандартным (если вы при установке сервера не указали иной), User — имя пользователя, скорее всего root, Password — пароль, Database — тут можно указать базу, к которой подключаться, если все правильно на начальных этапах, то в выпадающем списке уже появятся существующие БД на сервере.
3. Теперь необходимо создать строку подключения.
3.1. В любом месте компьютера создайте текстовый файл и переименуйте его в тип файла .udl
3.2. В открывшемся окне Использовать источник данных — выбрать ранее созданный источник данных (п. 2), ввести Пользователь и Пароль, жмем Ок.
3.3. Теперь созданный файл надо открыть с помощью Блокнот’а и там будет что-то подобное:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySQL
то, что начинается с Provider и до MySQL и есть строка подключения, т.е.
Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=MySQL
она нам понадобиться при настройке Excel.4. Теперь скачиваем специально подготовленный мной документ Excel
5. Открываем, возможно будет ругаться из-за того, что у вас сервер отличный от моего.
6. Идем на вкладку Данные — Параметры — Источник данных — Свойства подключения — Вкладка Определения.
6.1. Вводим Строка подключения, которая у нас появилась ранее (п. 3.3.), вводим текст SQL команды и жмем Ок.
Все, если все правильно было сделано, то в правой части должны появиться поля, которые вы хотели выбрать. Советую на сервере протестировать синтаксис и правильность своего SQL запроса, чтобы не появлялись дополнительные вопросы. Лично я работаю с MySQL через HeidiSQL, там сделал запрос, а потом просто скопировал его в Excel.
Обмен данными между Excel и MySQL
Вряд ли мы откроем секрет, если скажем, что MySQL является на сегодняшний день одной из наиболее доступных реляционных СУБД. Она бесплатна, стабильна в работе и ко всему прочему отличается неплохим быстродействием. Не случайно эта система управления базами данных пользуется огромной популярностью у разработчиков веб-приложений, построенных на основе клиент-серверной технологии.
Конечно, время никогда не проходит даром, в том числе и для MySQL. Эволюционировав до 5й версии, она значительно возмужала и обзавелась отсутствующими ранее функциями (поддержкой триггеров, вложенных запросов и др.), но… «У «Жигулей» тоже четыре колеса, фары, руль и прочие атрибуты, но это не Mercedes. Точно так же и MySQL — это не Oracle», — процитировал мне знакомый программист, пытаясь объяснить разницу между существующими платформами для хранения данных. Глубокомысленное высказывание, ничего не скажешь. Ладно, долой философию, займемся делом, а именно — обменом данных в связке «Microsoft Excel — MySQL».
Матерым программистам баз данных наверняка по зубам эта операция, но мы облегчим свою участь при помощи специальной надстройки к табличному редактору Excel с длиннющим названием Excel to MySQL Import, Export & Convert 1.1 от компании Sobolsoft. Размер утилиты — 5,7 Мб, стоимость — 20 долларов США.
Установка приложения проходит без шума и пыли, единственное, необходимо понизить уровень безопасности Excel (Сервис -> Макрос -> Безопасность), разрешив ему выполнять макросы.
Перед началом работы нужно подключить базу данных при помощи специального мастера Setup MySQL Database Connection и установить соединение. А далее все как по маслу: при желании можно экспортировать выбранные ячейки в таблицу MySQL, либо, напротив, импортировать нужную информацию из базы данных. Естественно, без хотя бы минимальных знаний основ языка структурированных запросов SQL здесь не обойтись, но это не страшно — ведь документации навалом.
Что до области применения этой утилитки от Sobolsoft, то она воистину многогранна, начиная от использования в качестве удобного инструмента для операторов баз данных и заканчивая эксплуатацией в собственных программных разработках. На этой оптимистической ноте и поставим точку в нашей маленькой заметке.
Подключение MySQL в Excel
Приложение Excel позволяет создавать подключение к внешним источникам, в том числе базам данных. Но при необходимости подключиться к базе данных под управлением СУБД MySQL, возникает проблема. Программа просто «не умеет» этого делать, но «научить» ее легко.
Содержание статьи:
Установка драйвера
Прежде необходимо установить драйвер Connector/ODBC от Oracle Corporation, скачать который можно по адресу http://dev.mysql.com/downloads/connector/odbc/ (при выборе драйвера под определенную ОС есть важный нюанс, который будет описан ниже).
Создание источника данных
Далее необходимо создать источник данных ODBC. Для этого заходим в «Панель управления», выбираем пункт «Администрирование», в нем пункт «Источники данных (ODBC)». Откроется следующее окно:
Выбираем «Добавить» и попадаем в меню выбора драйвера:
В списке имеется два возможных драйвера для MySQL различных кодировок: Unicode и ANSI. Выбирайте необходимую Вам. Если не знаете, какая Вам нужна, или это не имеет значения, то лучше устанавливать Unicode.
- Произвольное название источника;
- Описание источника;
- Сервер и порт. Порт оставляйте по умолчанию, если того не требуют настройки сервера;
- Пользователь и пароль, как при подключении в phpMyAdmin.
Протестируйте подключение к источнику, нажав кнопку «Test». Если подключение прошло успешно, то в списке баз данных «Database» должен появиться список доступных баз. Выдираем необходимую и жмем «OK». Источник создан.
Подключение к источнику из Excel
Проходим в книге Excel на вкладку «Данные» -> раздел «Подключения» -> «Из других источников» -> «Из мастера подключения данных».
Выбираем «ODBC DSN» -> созданное ранее подключение.
Дальнейшая работа аналогична стандартному подключению к SQL Server.
Ошибка совпадения архитектур
После установки соответствующего драйвера на 64-разрядную ОС, создании источника и подключения к нему, даже если все сделано правильно, может быть выдана ошибка «dns архитектура драйвера и архитектура приложения не соответствуют друг другу».
Проблема заключается в следующем. Вероятно, что во время инсталляции пакета программ Microsoft Office были выбраны параметры по умолчанию, при которых устанавливается 32-рязрядная версия. Таким образом, происходит несовпадение разрядностей драйвера и приложения.
Решение – скачать и установить дополнительно драйвер для Windows 32-bit.
Если установить только 32-битный драйвер, то подключение будет возможно, но создать источник через панель управления не получиться.
Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.
Добавить комментарий
Автоматизация обработки таблиц в Excel [Разбор кейса]
Обзор кейса
Карло, ИТ консультант, работал над сложной, но довольно типичной задачей. Ему нужно было разработать систему, которая бы создавала отчеты для руководства на основе Excel файлов, полученных от порядка 10-20 исследовательских лабораторий.
Сначала эти отчеты создавали в Excel – в основном вручную – и направляли руководству и лабораториям в печатном виде или PDF.
В таком подходе нет нужного уровня автоматизации и гибкости. Поэтому Карло решил найти способ выгружать данные из файлов лабораторий, организовывать их в заданном порядке, и экспортировать данные в базу данных MySQL. Потом, уже в веб интерфейсе, создавать необходимые отчеты, напр., графики динамики по годам, и направлять всем участникам ссылку на финальный отчет.
«Первоначальный подход занимал около 20 дней ужасной работы. Нам приходилось иметь дело с ошибками после копирования огромного объема данных из одного сводного отчета в Excel в отдельные отчеты по каждой задействованной лаборатории. Форматы очень разные, поэтому не представлялось возможным автоматизировать этот процесс в Excel. Кроме того, клиенту нужны были графики, где можно было бы сравнить результаты, полученные много месяцев назад – такое возможно только при выгрузке данных в MySQL.»
В подобных задачах важно, во-первых, минимизировать работу вручную и сократить время на подготовку данных. Во-вторых, аккуратно экспортировать подготовленные данные в MySQL.
Один из подходов к автоматизации – создать специальный макрос VBA. Но при таком большом объеме необходимых операций написание макроса с нуля займет неоправданно много времени. Кроме того, если вы хоть раз пробовали настроить интеграцию макроса с внешней базой данных, вы представляете, насколько утомительной может быть синхронизация вручную. Одно небольшое изменение в процессе (к примеру, другое название исходной таблицы) ведет к бесконечным правкам в скрипте.
Надстройка XLTools, с другой стороны, дала Карло гибкие инструменты для автоматизации всего процесса без VBA: извлечь, подготовить и экспортировать данные в базу данных MySQL.
XLTools Автоматизация – это мощный и многоцелевой инструмент. Последовательность всех операций записана на одном листе Excel, и все операции вручную сводятся к нажатию одной единственной кнопки.
«Мой клиент очень доволен результатами, потому что теперь мы можем выполнить всю работу за 2 часа вместо 20 дней. XLTools помог нам облегчить работу с текущей XLS структурой. Процесс открыт для правок в будущем – скрипт очень легко изменить. Сейчас мы переносим данные в базу данных за минуты, где уже формируем все нужные отчеты.»
Рассмотрим некоторые операции, автоматизированные в этом процессе.
Шаг 1. Автоматически собрать данные из файлов Excel
XLS файлы, полученные из исследовательских лабораторий, стандартизированы. Они всегда следуют одному шаблону. Нам нужно извлечь данные из этих исходных файлов и подготовить к дальнейшей обработке.
Именно это и выполняет командаXLTools.ExtractTable:
Она извлекает данные из внешних Excel или CSV файлов. Вы можете собрать все необходимые данные в одном месте и продолжить работу с полным объемом данных. По большому счету, это инструмент копирования-вставки.
Извлекая простой диапазон, он будет вставлен как именованная таблица. Только данные в формате таблицы могут служить источником данных для дальнейших операций, в т.ч. для выполнения SQL запросов в Excel.
Например, нам нужно извлечь эту таблицу с числовыми кодами, присвоенными лабораториям:
Для этого, пропишем команду автоматизацииXLTools.ExtractTable:
XLTools.ExtractTable | |
---|---|
WorkbookFile: | source.xls |
Range: | LABCODE!E:F |
SkipTopRowsCount: | 4 |
ApplyTableName: | LabCodes |
Headers: | lab,stat |
PreserveFormat: | TRUE |
OutputTo: | NewHiddenSheet[LabCodes] |
Укажите диапазон данных, которые нужно извлечь:
Книга под названием “source.xls”. Обратите внимание, что исходные файлы должны находиться в той же папке, что и ваш файл автоматизации.
Диапазон E:F на листе “LABCODE”
Пропустить (Skip) 4 строки сверху, поскольку данные по факту начинаются со строки 5
Укажите, куда поместить извлеченные данные:
Назвать новую таблицу “LabCodes”
Присвоить заголовки “lab” and “stat”
Сохранить формат ячеек (PreserveFormat)
Поместить результат на новый скрытый лист “LabCodes”.
Нам не нужно, чтобы лист был видимый – извлечение данных это лишь промежуточный шаг к дальнейшим операциям.
Выполнив эту команду, получим такую таблицу “LabCodes”, начиная с ячейки A1 на новом скрытом листе “LabCodes”:
Точно так же мы извлекли другие необходимые таблицы из файлов лабораторий. После этого мы готовы к работе с полным объемом данных.
Шаг 2. Объединить две таблицы Excel c помощью автоматизированного SQL запроса
В самом начале проекта, Карло составил схему, как конкретные записи должны быть выгружены из Excel в MySQL. Используя эту схему, мы помогли автоматизировать подготовку данных к экспорту.
Для обработки данных мы рекомендуем командуXLTools.SQLSelect. Мы очень любим и сами часто используем эту команду:
SQL запросы – первый выбор, если нужно объединить две или более таблиц по общему полю;
XLTools позволяет применять SQL SELECT запросы напрямую к таблицам Excel и быстро подготовить данные;
SQL позволяет выполнять несколько сложных задач за один раз – можно реорганизовать и отформатировать данные всего за пару запросов.
Например, нам нужно было объединить эти две таблица и переименовать столбцы. Кроме того, нам нужно было обработать положительные/отрицательные значения: столбец “sign” указывает, что значения в столбце “d” положительные или отрицательные.
Для этого, мы используем командуXLTools.SQLSelect:
XLTools.SQLSelect | |
---|---|
SQLQuery: | SELECT tbl2.[lab] as [ic_code], tbl1.[Nb] as [rank], tbl1.[%] as [percent], tbl1.[N°] as [lab_code], CASE WHENtbl1.[sign] = ‘-‘THEN-1 * tbl1.[d]ELSEtbl1.[d]ENDas [dev], tbl1.[Sd] as [s_dev], tbl1.[D2] as [dist], tbl1.[Method] as [method], FROM[source.xls].[Table1]tbl1 LEFT JOIN[LabCodes]tbl2ONtbl1.[Nb] = tbl2.[stat] |
PreserveFormat: | TRUE |
ApplyTableName: | data |
OutputTo: | NewSheet[data] |
Укажите, какие поля нужно выбрать (SELECT):
Взять столбец “lab” из таблицы 2 и назвать “ic_code”
Взять столбец “Nb” из таблицы 1 и назвать “rank”
Взять столбец “%” из таблицы 1 и назвать “percent”
Взять столбец “N°” из таблицы 1 и назвать “lab_code”
Взять столбец “sign” из таблицы 1 и назвать “dev”. В то же время добавляем условие (CASE WHEN): если значение в столбце “sign” равно “-”, тогда умножить значение в столбце “d” на -1
Взять столбец “Sd” из таблицы 1 и назвать “s_dev”
Взять столбец “D2” из таблицы 1 и назвать “dist”
Взять столбец “Method” из таблицы 1 и назвать “method”
Найти и выбрать таблицу “Table1” из (FROM) книги “source.xls”
Объединить таблицы по значениям (LEFT JOIN ON) в столбцах “Nb” и “stat”
Укажите, как выгрузить результат запроса:
Сохранить формат ячеек (PreserveFormat)
Присвоить новой таблице название “data”
Поместить результат на новый лист “data”
Как только вы выполните эту команду, через секунду будет сгенерирована таблица результата:
Обратите внимание, что все столбцы имеют новые названия. Значения в столбце “dev” либо положительные, либо отрицательные.XLTools.SQLSelect– отличный инструмент для автоматизации обработки таблиц Excel. Практически все сложные манипуляции в проекте Карло мы выполнили с помощью SQL запросов.
Шаг 3. Автоматически экспортировать данные из Excel в базу данных MySQL
В проекте Карло было немало сложных и вдохновляющих задач (СПАСИБО)! Если извлечение данных и SQL запросы уже давно включены в Автоматизацию XLTools, то экспорт из Excel в MySQL – новая разработка.
После того, как мы подготовили и нужным образом отформатировали данные, создаем командуXLTools.ExportToMySQL:
XLTools.SQLSelect | |
---|---|
Tables: | zscore-fix,zscore-pt,outliers,repeatability,data |
Server: | Имя сервера или IP адрес сервера |
Database: | Имя вашей БД |
Uid: | Имя пользователя для доступа в вашу БД |
Pwd: | Пароль для доступа в вашу БД |
ApplyTableName: | ExportResults |
OutputTo: | NewSheet[ExportResults] |
Укажите, какие таблицы нужно экспортировать в базу данных:
Взять таблицы “zscore-fix”, ”zscore-pt”, ”outliers”, ”repeatability”, ”data”
Введите данные для подключения к MySQL:
Введите учетные данные для входа в вашу БД: сервер, база данных, имя пользователя и пароль. Это позволит XLTools связаться с вашей базой данных.
Укажите, где поместить отчет об экспорте данных:
По завершении выполнения, команда выгрузит данные в MySQL и создаст сводный отчет об экспорте:
Отчет показывает, сколько записей (строк) из каждой таблицы Excel было экспортировано в БД. В случае ошибок во время экспорта, они будут указаны с последнем столбце. Кстати, описание ошибок будет приведено на языке вашей базы данных. Наш клиент Карло работает в Риме, и ошибки будут выводиться на итальянском.
В данном случае, экспорт двух записей в таблице “zscore-fix” не был успешен. Похоже, некоторые ячейки в этой таблице были пустыми – а такие записи не могут быть экспортированы в MySQL. Теперь легко вернуться и исправить ошибки.
Привязать выполнение всего процесса к одной кнопке
XLTools Автоматизация также позволяет назначать пользовательские кнопки для этих команд. В примерах, рассмотренных выше, мы выполняли каждую команду отдельно. Но мы можем выделить всю последовательность команд и привязать их к собственным кнопкам на вкладке XLTools.
Напр., команды Карло привязаны к трем кнопкам. “Prepare & Export” запускает весь процесс (извлечение, подготовка и экспорт данных) по нажатию всего одной кнопки:
У вас есть процессы в Excel, которые можно автоматизировать?
Свяжитесь с нами! Готовы помочь.
Обсудим вашу задачу и убедимся, что XLTools может с ней справиться. Помощь с настройкой кастомизированной автоматизации включена в стоимостьлицензии.
Что если в XLTools нет (пока нет) функционала, нужного для вашей конкретной задачи? Мы постараемся разработать его для вас. В основе многих новых надстроек – предложения наших пользователей. Благодаря проекту Карло, Автоматизация теперь поддерживает Экспорт из Excel в MySQL.
«Мы выбрали XLTools, потому что команда очень быстро отреагировала на наш запрос. Они были готовы обсуждать варианты, помогли нам с кастомным решением и были всегда на связи.»Карло Мелис, ИТ консультант
Благодарность:Карло Мелис (Carlo Melis), ИТ консультант, работает по заданию международного негосударственного органа по сертификации пищевой продукции, Рим, Италия.
Надстройки в фокусе:Автоматизация без VBA(извлечение таблиц, SQL запросы, экспорт из Excel в MySQL). Поддерживается в версии XLTools 5.0.0.762 и выше.
MySQL :: MySQL для Excel
MySQL для Excel — это надстройка Excel, которая устанавливается и доступна на вкладке «Данные» MS Excel, предлагая интерфейс в виде мастера, организованный элегантным, но простым способом, чтобы помочь пользователям просматривать схемы MySQL, Таблицы, представления и процедуры и выполнять операции с данными с ними, используя MS Excel в качестве средства для передачи данных в базы данных MySQL и из них.
MySQL для Excel был разработан как простой и удобный инструмент для аналитиков данных, которые хотят использовать возможности MS Excel для работы с данными MySQL, не беспокоясь о технических деталях, связанных с получением нужных данных, повышая производительность, чтобы они может сосредоточиться на анализе и обработке данных.
Импорт данных
MySQL для Excel делает задачу переноса данных MySQL в Excel очень простой; промежуточных CSV-файлов не требуется, всего пара щелчков мышью, и данные будут импортированы в Excel. MySQL для Excel поддерживает импорт данных из таблиц, представлений и хранимых процедур.
Подробнее »
Экспорт данных
MySQL для Excel позволяет пользователям создавать новую таблицу MySQL из выбранных данных Excel; типы данных автоматически распознаются и используются по умолчанию для новой таблицы, а имена столбцов могут быть созданы из первой строки данных, что ускоряет процесс и упрощает его для нетехнических пользователей.
Добавить данные
MySQL для Excel позволяет пользователям сохранять выбранные данные Excel в существующих таблицах; он автоматически попытается сопоставить выбранные столбцы с столбцами в таблице MySQL по имени столбца или по типу данных, затем пользователи могут просмотреть сопоставление, вручную изменить его и сохранить для дальнейшего использования. Как и функция экспорта данных, добавить данные в существующую таблицу очень просто.
Подробнее »
Новинка! Редактировать данные
MySQL для Excel теперь предоставляет способ редактировать данные таблицы MySQL непосредственно в Excel, используя новый рабочий лист в качестве основы для обновления существующих данных, вставки новых строк и удаления существующих очень удобным и интуитивно понятным способом.Изменения отправляются обратно на сервер MySQL в виде пакета транзакций одним нажатием кнопки или могут быть отправлены, как только они сделаны, без дополнительных щелчков, если пользователи предпочитают это. Это мощная функция, поскольку Excel — это естественный пользовательский интерфейс для работы с данными, и эти изменения могут быть немедленно отражены в базе данных.
Подробнее »
MySQL :: Новинка! MySQL для Excel: редактировать данные
Восстановить данные
Результат операции
Функция редактирования данных MySQL для Excel предназначена для использования Microsoft Excel в качестве интерфейса для пользователей, чтобы упростить внесение изменений в данные таблиц MySQL. Благодаря очень минималистичному пользовательскому интерфейсу пользователи могут сосредоточиться на внесении изменений в данные таблицы:
- Вставить новые строки — пользователи могут вставить новую строку через строку светло-желтого цвета в конце существующих данных; когда пользователи вводят или вставляют в нее какие-либо данные, эта строка помечается для вставки.
- Удалить существующие строки — пользователи могут удалять существующие строки так же, как они удаляли бы строку в MS Excel, строка удаляется с рабочего листа и помечается для удаления.
- Обновить существующие данные — пользователи могут обновлять значения в любой строке и столбце, просто вводя или вставляя что-либо в нужную ячейку, затем эти ячейки окрашиваются в голубой фон, поэтому изменения легко идентифицировать и помечать для обновления.
- Принять изменения — при нажатии этой кнопки открывается диалоговое окно, в котором пользователи могут просматривать запросы, сгенерированные изменениями, которые он внес в данные, и передавать эти изменения на сервер MySQL.
- Auto-Commit — отметив эту опцию, пользователи могут автоматически отправлять изменения на сервер MySQL, как только они вводятся в ячейки MS Excel; это также отключает кнопку «Зафиксировать изменения».
- Восстановить данные — при нажатии этой кнопки открывается диалоговое окно, в котором пользователи могут выполнять любое из следующих действий.
- Обновить данные из базы данных — сбрасывает сеанс редактирования путем извлечения новой копии данных из таблицы MySQL, предыдущие изменения, сделанные пользователем, отменяются.
- Вернуть измененные данные — отменяет все предыдущие изменения, сделанные пользователем после последней фиксации.
Функция редактирования данных позволяет пользователям редактировать данные таблицы MySQL непосредственно в электронной таблице Excel, в которую были импортированы данные, при желании сгенерированные запросы могут быть просмотрены перед отправкой изменений обратно на сервер MySQL, или пользователи могут настроить пропуск этого этапа просмотра и нажимайте изменения, как только они введены.
Easy , quick и надежный ; добавление, удаление и обновление данных никогда не было более удобным для пользователей любого типа, у которых ранее не было опыта работы с базами данных.
.
Как связать ms excel-2007 с mysql.
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
- Авторизоваться зарегистрироваться
текущее сообщество
zxjsdp / excel2mysql: перенос данных из Excel (файл xlsx) в MySQL.
перейти к содержанию Зарегистрироваться- Почему именно GitHub?
Особенности →
- Обзор кода
- Управление проектами
- Интеграции
- Действия
- Пакеты
- Безопасность
- Управление командой
- Хостинг
- мобильный
- Истории клиентов →
- Безопасность →
- команда
- предприятие
- Проводить исследования
- Изучите GitHub →
Учитесь и вносите свой вклад
- Темы
- Коллекции
- В тренде
- Учебная лаборатория
- Руководства с открытым исходным кодом
Общайтесь с другими
- События
- Форум сообщества