Запись данных обратно в SQL из листа Excel - PullRequest
15 голосов
/ 15 апреля 2009

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

Похоже, что это не функция в Excel, и Google не нашел много полезного.

Ответы [ 6 ]

6 голосов
/ 17 апреля 2009

Если вы хотите, чтобы файл Excel выполнял всю работу (извлечение из БД; манипулирование; обновление БД), вы можете посмотреть на объекты данных ActiveX (ADO). Вы можете получить обзор по адресу:

http://msdn.microsoft.com/en-us/library/ms680928(VS.85).aspx

5 голосов
/ 15 апреля 2009

Требуется мастер импорта / экспорта в SQL Management Studio. В зависимости от того, какую версию SQL Server вы используете, откройте SSMS (подключитесь к желаемому экземпляру SQL), щелкните правой кнопкой мыши базу данных, в которую вы хотите импортировать, и выберите Задачи .. «Импорт данных».

В мастере нажмите кнопку «Далее» (после экрана вступления) и в раскрывающемся списке «Источник данных» выберите «Microsoft Excel». Вы указываете путь и имя файла электронной таблицы Excel, независимо от того, есть ли у вас заголовки столбцов или нет .. затем нажмите Далее. Просто следуйте указаниям мастера, он установит пункт назначения (может быть SQL Server или другой пункт назначения) и т. Д.

Справка по этому процессу доступна в Электронной документации по SQL Server и более (пошаговое руководство) от MSDN .

Если вам нужно что-то развертываемое / более надежное (или менее управляемое мастером), вам нужно взглянуть на службы интеграции SQL Server (для более корпоративного и безопасного подхода). Это, вероятно, излишне для того, чего вы хотите достичь.

3 голосов
/ 17 декабря 2012

Существует новый плагин Excel под названием «MySQL для Excel»: http://www.mysql.com/why-mysql/windows/

1 голос
/ 30 марта 2010

Вы можете использовать попробовать эти надстройки:

www.QueryCell.com (я его создал) www.SQLDrill.com www.Excel-DB.net

0 голосов
/ 15 марта 2018

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

В моем приложении бродячие продавцы используют копию рабочей книги Excel, которая отслеживает ход работы потенциального клиента с помощью кредитной заявки. Текущий этап приложения необходимо автоматически сохранить обратно в удаленную базу данных SQL, чтобы мы могли создавать отчеты по нему.

Отклоненные методы обновления базы данных из Excel:

SSIS и OpenRowSet - оба метода, позволяющие SQL Server извлекать данные из Excel, и не очень хорошо работают, когда книга Excel находится в неопределенном месте на компьютер пользователя, и, конечно, нет, когда книга в настоящее время открыта в Excel.

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

Я также подумал о запуске веб-API на конечном сервере. Макросы в книге Excel подключаются к веб-API для передачи данных. Однако иногда бывает сложно позволить веб-API взаимодействовать с внешним миром. Кроме того, код, который делает его устойчивым перед лицом временной потери интернет-соединения, является болезненным.

Принятое решение:

Решение, которое я планирую принять, это низкотехнологичное: email . Excel отправляет данные по электронной почте на адрес, расположенный на сервере Exchange. У всех в компании установлен Outlook, поэтому электронные письма отправляются путем программного добавления их в Outlook Outbox. Outlook прекрасно обрабатывает случай, когда пользователь не в сети. На стороне сервера пользовательский исполняемый файл C #, запускаемый через регулярные промежутки времени планировщиком задач, опрашивает входящие и обрабатывает электронные письма.

0 голосов
/ 15 апреля 2009

Вы можете использовать функцию OPENROWSET для манипулирования данными Excel из скрипта T-SQL. Пример использования будет:

UPDATE OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; DATABASE = c: \ MySpreadsheet.xls', «Выбрать * из MyTable») SET Field1 = 'Value1' WHERE Field2 = 'Value2'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...