Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
1
MS Access

Импорт экспорт данных из Access в Excel и обратно

01.01.2018, 18:12. Показов 3147. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:

Delphi
1
('Select * INTO Лист IN '+''''+'C:\Данные.xls'+''''+'[Excel 8.0;] From Таблица');
им я экспортирую данные в файл, а как потом импортировать данные из этого файла обратно в базу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2018, 18:12
Ответы с готовыми решениями:

Импорт и Экспорт в Word,Excel,Access
Прошу помочь с лабами бд.на форме есть Table,DBGrid,DataSource.Таблицы сделаны в Paradoxe.как...

Экспорт данных из Excel в Grid через Access
Не могу заставить выгружаться данные из Excell (лист 'Увольнение'). Выгружается всегда почему то с...

Импорт данных из Excel в Access через Delphi7
Есть такой вопрос как осуществить загрузку в таблицу БД Access из Excel через Delphi7? Короче есть...

Delphi 7 access экспорт данных толка строк в excel ?
Всем доброго, дня суток Создал Базу данных на Delphi 7 , Access некого предприятие тема моего...

24
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
01.01.2018, 20:56 2
Лучший ответ Сообщение было отмечено Joey как решение

Решение

прочитать xls Инструкция: Использование Excel из Delphi
записать в БД с помощью SQL
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
01.01.2018, 20:58 3
Лучший ответ Сообщение было отмечено Joey как решение

Решение

Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
как потом импортировать данные из этого файла обратно в базу?
Можно так Импорт из Excel в DBGridEh
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
01.01.2018, 21:57  [ТС] 4
Спасибо народ!

Добавлено через 34 минуты
Возник другой вопрос, а можно как то обновлять базу а не дописывать в нее? то есть например БД заполнена наименованиями и их количеством, делаю экспорт в файл а потом в этом файле например меняю количество у одного наименования, как потом импортировать этот файл обратно в БД обновляя там эти данные? или например изменил количество и еще дописал новое наименование, то в БД потом надо обновить еще и дописать данные как это все можно реализовать?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
02.01.2018, 07:43 5
проверить данные по ключевому полю
например у тебя в базе

101101 Яблоки зеленые 100 кг

в эксельке
101101 Яблоки зеленые 120 кг

ты эксельку импортируешь во временную таблицу, делаешь Join по ключевому полю, в условие вставляешь Количество_бд<>Количество_xls и у тебя получается таблица с измененными данными

далее уже делаешь простой Update
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
02.01.2018, 12:12  [ТС] 6
qwertehok, Спасибо! попробую.
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,373
02.01.2018, 14:22 7
Надо было не импортировать в Акцес, а сделать связь с таблицей.
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
13.01.2018, 23:11  [ТС] 8
еще вопрос по этому коду:

Delphi
1
('Select * INTO Лист IN '+''''+'C:\Данные.xls'+''''+'[Excel 8.0;] From Таблица');
можно как то этот файл сохранять через SaveDialog?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
13.01.2018, 23:32 9
Лучший ответ Сообщение было отмечено ДневнойДоширак как решение

Решение

в смысле сохранить?
SaveDialog только указывает путь к файлу

после выполнения
Delphi
1
if SaveDialog1.Execute Then
у тебя в
Код
SaveDialog1.PathName
будет ПУТЬ и этот путь пихай куда хочешь
1
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
14.01.2018, 12:41  [ТС] 10
Спасибо!

Добавлено через 11 часов 21 минуту
Возник еще вопрос по этому коду:

Delphi
1
('Select * INTO Лист IN '+''''+'C:\Данные.xls'+''''+'[Excel 8.0;] From Таблица');
в файл "Данные" на один лист записывается максимум 65536 строк записей, можно как то сделать что если в файл сохраняется больше чем 65536 строк то они распределялись дальше на лист2 лист3 лист4 и т.д.?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
14.01.2018, 16:06 11
а взять xlsx нельзя?
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
14.01.2018, 17:37  [ТС] 12
Цитата Сообщение от qwertehok Посмотреть сообщение
а взять xlsx нельзя?
к сожалению не везде может быть установлен офис читающий xlsx, много народу знаю кто еще 2003ий юзает. а сколько там в лист входит строк у xlsx, знаю что больше но максимальное не знаю?

Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
если в файл сохраняется больше чем 65536 строк то они распределялись дальше на лист2 лист3 лист4 и т.д.?
такое вообще одним запросом можно сделать?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
14.01.2018, 18:43 13
Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
к сожалению не везде может быть установлен офис читающий xlsx
тут не обязателем сам офис, достаточно апдейт поставить

Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
такое вообще одним запросом можно сделать?
запросом можно, но в новых (от 2014) версиях SQL - там есть конструкция для нарезки и вывода страницы
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
14.01.2018, 20:28  [ТС] 14
а как тогда можно организовать разделение по 65536 строк? я для проверки пробовал в два запроса делать, указывал просто у первого писать на лист1 если <65536, а у второго писать на лист2 если >65536 и все работало нормально ~90000 записей писало в один файл на два листа в одном 65536 записей на втором все остальное, но если записей допустим ~500000 то как тогда быть чтобы 100500 запросов не писать?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
14.01.2018, 20:52 15
Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
а как тогда можно организовать разделение по 65536 строк?
не делать такого разбиения - основной и самый правильный совет

подумай еще раз над заданием.
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
14.01.2018, 21:56  [ТС] 16
Цитата Сообщение от qwertehok Посмотреть сообщение
не делать такого разбиения - основной и самый правильный совет
подумай еще раз над заданием.
подскажи тогда я вот тут меняю формат xls на xlsx

Delphi
1
2
3
('Select * INTO Лист IN '+''''+'C:\Данные.xls'+''''+'[Excel 8.0;] From Таблица');
 
('Select * INTO Лист IN '+''''+'C:\Данные.xlsx'+''''+'[Excel 8.0;] From Таблица');
но при выполнении запроса выходит ошибка что (обновление невозможно. база данных или объект доступны только для чтения) в чем причина? меняю обратно и все нормально срабатывает.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
14.01.2018, 23:39 17
Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
в чем причина?
драйвер?
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
14.01.2018, 23:45  [ТС] 18
что за драйвер?

Добавлено через 36 секунд
офис 2007
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
14.01.2018, 23:52 19
при чем тут офис?

Цитата Сообщение от ДневнойДоширак Посмотреть сообщение
что за драйвер?
в твоем случае C:\Данные.xls это не просто экселька, это БД

а твой драйвер не знает что такое xlsx и пишет ошибку
0
0 / 0 / 0
Регистрация: 27.07.2017
Сообщений: 65
15.01.2018, 00:19  [ТС] 20
а ты про подключение? про провайдер? что делать в таком случае? подключать кодом xlsx'ку провайдером? и какой нужен для этого? который офис 12?
0
15.01.2018, 00:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2018, 00:19
Помогаю со студенческими работами здесь

Экспорт/Импорт данных в БД
Каким образом можно перенести данные из одной таблицы БД в другую по заданному условию? СПАСИБО

Экспорт Excel в access
Подскажите пожалуйста быстрый способ экспорта таблицы Excel в базу Access с помощью ADOQuery....

Экспорт из Access в Excel
Сделал программу по разным пособиям.Она експортирует данные из excel в access,подскажете как...

Импорт из Excel в Access
Добрый вечер. Делаю так: ADOConnection2.ConnectionString:='Provider=MSDASQL.1;Persist Security...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru