powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ФАК: работа с Экселем
34 сообщений из 34, показаны все 2 страниц
ФАК: работа с Экселем
    #33006415
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кажется, пора писать новый фак. Какие есть способы импорта/экспорта из/в Экселя/Эксель?

1. Линковка.
2. Собственно импорт/экспорт.
3. Pass-Through Query (возможно ли вообще?).
4. Как-то делалось через код - почти как линковка, но без явной линковки.
5. Через методы библиотеки Excel.

Может, и про Ворд можно в тот же фак...
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006425
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
а "3." - что такое? Что-то вроде
select * from [excel 5.0;database=d:\1.xls].[лист1$]
и
select * from [Лист1$] in 'd:\1.xls' 'excel 5.0;'
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006433
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч3. Pass-Through Query (возможно ли вообще?).

Саныч, ты сам то как думаешь, возможно ли заставить эксель выполнять SQL-запросы?
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006447
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Лох ПозорныйСаныч, ты сам то как думаешь, возможно ли заставить эксель выполнять SQL-запросы?
Ну, если есть драйвер (причем не только для Экселя, но и вообще для текстовых файлов), то почему бы и нет. Ведь Pass-Through Query делается через драйвер ODBC.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006469
Spiage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отчеты из Access в Excel делаю так:
Access: Открываю шаблон, в шаблоне листы, в модулях листов (чтобы удалять не листы, а модули, надо понижать безопасность, поэтому выбрал код писать в модулях листов, а не в стандартных модулях) есть процедурка с параметрами
Access: Открываю рекордсет со сформированым отчетом, передаю его как параметр в ТУ-САМУЮ процедуру листа
Excel: Создает новый лист, засасывает данные из рекордсета, форматирует все на основе шаблона, делает что ему там надо еще...
Access:Если мне не надо больше ничего, то вызываю вторую процедуру
Excel: Вторая процедура удаляет лист, остаются листы с "только данными", без кода
Access: "Спасибо тебе, Excel, за работу!"

Код по формированию лежит Excel, т.к. после тестовых замеров выяснил, что скорость в этом случае гораздо выше
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006472
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Лох ПозорныйСаныч, ты сам то как думаешь, возможно ли заставить эксель выполнять SQL-запросы?
Ну, если есть драйвер (причем не только для Экселя, но и вообще для текстовых файлов), то почему бы и нет. Ведь Pass-Through Query делается через драйвер ODBC.

Есть маленькая особенность, если внимательно посмотреть,то запросы к Excel отрабатывает старый добрый odbcjt32.dll
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006512
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Лох ПозорныйСаныч, ты сам то как думаешь, возможно ли заставить эксель выполнять SQL-запросы?
Ну, если есть драйвер (причем не только для Экселя, но и вообще для текстовых файлов), то почему бы и нет. Ведь Pass-Through Query делается через драйвер ODBC.
Если рассматривать "нормальный" сервер, то текст "пассру" (ну и название) запроса передается на сервак, там выполняется (серваком), и возвращается результат выполнения. Джет никоим образом в этой работе не участвует. Отдал текст - получил результат.
Как ты себе это представляешь в случае экселя? Ну передали текст запроса в программу под названием excel.exe, и что дальше? Выполнять-то этот запрос кто будет? Драйвер?
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006643
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне понравилось работать с екцелем через запросы (через ADO)- привычно, гибко, удобно и быстро (правда есть один непритяный глюк (утечка памяти) и особеность работы с первой строкой и способ опредления екцелям типа полей)
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33006670
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нету здесь никакого PassThrough

Что через OLEDB, что ODBC - всё одно, JET доступом к excel занимается
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33007260
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5. Через методы библиотеки Excel.

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

Недостатки
1) Медленно работает
2) много программировать

Как бороться с недостатками:
ну и пох.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33007363
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
6. Biff файл - формат документирован, если нет возможности программировать самому - можно взять(найти , купить) готовые ActiveX

с Shark не согласен по пп.2 - много программить.
Хороший единожды написанный класс решает проблему.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33007413
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема:
подключить (к отчету, форме) файл экселя в связанном режиме.....
требуется реристрация OLE , какого и где полные непонятки...
сравнивал два компа :
на работающем грузилась olepro32.dll (если память не измняет)
как её загрузить (если это в ней дело) ? мне не удалось...
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33007438
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сюда же
http://www.sql.ru/forum/actualthread.aspx?tid=174249
(обновляются формулы, если таблица подлинкована
и файл открыт одновременно в Excel,
иначе нет)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ФАК: работа с Экселем
    #33668015
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
На днях этому топику исполнился год...
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668269
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, Саныч, а я за это время многому научился по работе а экселем и вордом.

НАКЛАДНЫЕ 1С - это леХко!!!!

тут есть пример по его использованию.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668299
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Угу... А можешь сюда скопировать основное? А то ведь я не знаю, где там чего искать...
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668367
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую...
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668409
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавил немного комментариев.
к сожалению делать рабочую демку лень ( прошу не ругать)
но если у кого есть конкретные тестовые данные (в Вашем формате) для 2-3 накладных я попробую под них запрос (там один ) сделать
вставлять сюда текстом это ( я думаю) слишком много
желающие могут для ознакомления скачать - что непонятно объясню.
рассмотрены 2 метода вставки в эксель по полям, и с помощью рекордсета.
копирование строк,форматировани строк экселя по образцу. вставка формул.
вставка копии листа из экселя в форму акса. "активация формы" . при двойном клике на форме возможность редактирования выводимого на форме (в экселе, как в оле объекте т.е. вызов экселя)
вывод на печать формы (ВМЕСТО ОТЧЕТА)
разделение формы на две страницы при необходимости
приложены экселевские бланки накладных (взяты из 1с)
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668411
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файл, забыл вложить
исправляюсь
ХР
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33668758
Fat Lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, по п.4 может быть ты это имел ввиду?
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33669091
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Fat LamerСаныч, по п.4 может быть ты это имел ввиду?
Идеологически очень похоже. Но синтаксис вроде был другой. Здесь я вижу вещи, которые мне не помнились (фигурные скобки, числовые коды драйверов). Был топик, где кто-то это искал, я помогал как мог и не смог помочь, а потом автор топика нашел.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #33677746
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Fat LamerСаныч, по п.4 может быть ты это имел ввиду?
Нашел!!! Я имел в виду вот это:
/topic/145252&pg=-1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ФАК: работа с Экселем
    #35270292
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько слов об импорта/экспорта в/из Excel через ОЛЕ автоматизацию.

* Часто таблицы в экселе бывают кривые, из-за чего при линковке или штатном импорте/экспорте происходит неправильное преобразование полей со значениями, датами и т.п.
* Бывает нужно собрать часть данных из отдельных ячеек на листе, а часть - из таблички данных.
* Таблички данных могут располагаться на разных местах рабочего листа.
* Часто бывает, что при настроенном импорте исходная табличка в экселе разрастается, в нее в разные позиции добваляются новые столбцы и т.п.
* Бывает необходимо пробежаться по нескольким листам рабочей книги, собирая данные со всех листов в одну общую таблицу.

Все это привело к необходимости иметь возможность гибкого общения с Excel через ОЛЕ автоматизацию.

В конечном итоге была разработана система экспорта/импорта в/из Excel, базирующаяся на спецификациях импорта, задаваемых пользователем и позволяющая справляться со всеми сложными ситуациями, описанными выше. Сейчас она чуть-чуть модернизируется, так как на еу основе делается надстройка, позволяющая выводить структурированные отчеты с группировкой числовых данных (а-ля структура баланса). Как закончу, мог бы выложить исходные формы и текст, система сделана на ADP и требует SQL сервер.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35270891
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin ViktorА мне понравилось работать с екцелем через запросы (через ADO)- да удобно,

но только в случае, если лист книги похож на таблицу базы данных.
Когда в одной колонке есть значения и текстовые и числовые и т.д., запросы ADO работает неправильно.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35270899
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_Когда в одной колонке есть значения и текстовые и числовые и т.д., запросы ADO работает неправильно.
Поэтому все "рабочие" таблицы, которые ведутся живыми людьми приходится разбирать через ОЛЕ.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35271144
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так приспособился открывать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dim xls As String:      xls = CurrentProject.Path & "\Книга1.xls"
Dim lst As String:      lst = "Лист1"

Dim XL As Excel.Application
Dim WB As Excel.Workbook
Dim SH As Excel.Worksheet

Set XL = CreateObject("Excel.Application")

Set WB = XL.Workbooks.Open(xls)
If Err.Number <>  0  Then         'если такой проверки я не делаю, то excel остаётся в памяти, в случае ошибки открытия
    XL.Quit
    Set XL = Nothing
End If

Set SH = WB.Worksheets(lst)
If Err.Number <>  0  Then
    WB.Close
    XL.Quit
    Set XL = Nothing
End If

здесь цикл или что-то ещё

'   WB.Save
    WB.Close
    
    XL.Quit
    Set XL = Nothing
а вот свойство MultiUserEditing и метод ExclusiveAccess ещё ни разу не использовал
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35272633
Уважающий ВсехВас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To klen
"Когда в одной колонке есть значения и текстовые и числовые и т.д., запросы ADO работает неправильно."
Если не трудно,если под рукой, НЕ СПЕША ,отбросив лишнее из своей программы,... пример к вышесказанному.(Максимум комментариев, если не трудно).
Не в коем случае не из чувства неверия к Вам. (Из личных соображений.)
Заранее благодарен.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35272655
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Уважающий ВсехВасTo klen
"Когда в одной колонке есть значения и текстовые и числовые и т.д., запросы ADO работает неправильно."
Если не трудно,если под рукой, НЕ СПЕША ,отбросив лишнее из своей программы,... пример к вышесказанному.(Максимум комментариев, если не трудно).
Видимо, речь о том, что Аксесс распознаёт тип полей Экселя сам на основании данных в первой строке. И иногда делает это не так, как хотелось бы.
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35272676
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
How To Use ADO with Excel Data from Visual Basic or VBA


A Caution about Mixed Data Types

As stated previously, ADO must guess at the data type for each column in your Excel worksheet or range. (This is not affected by Excel cell formatting settings.) A serious problem can arise if you have numeric values mixed with text values in the same column. Both the Jet and the ODBC Provider return the data of the majority type, but return NULL (empty) values for the minority data type . If the two types are equally mixed in the column, the provider chooses numeric over text .

For example:

• In your eight (8) scanned rows, if the column contains five (5) numeric values and three (3) text values, the provider returns five (5) numbers and three (3) null values.

• In your eight (8) scanned rows, if the column contains three (3) numeric values and five (5) text values, the provider returns three (3) null values and five (5) text values.

• In your eight (8) scanned rows, if the column contains four (4) numeric values and four (4) text values, the provider returns four (4) numbers and four (4) null values.

As a result, if your column contains mixed values, your only recourse is to store numeric values in that column as text, and to convert them back to numbers when needed in the client application by using the Visual Basic VAL function or an equivalent.

To work around this problem for read-only data, enable Import Mode by using the setting "IMEX=1" in the Extended Properties section of the connection string. This enforces the ImportMixedTypes=Text registry setting. However, note that updates may give unexpected results in this mode. For additional information about this setting, click the article number below to view the article in the Microsoft Knowledge Base:
194124 (http://support.microsoft.com/kb/194124/EN-US/) PRB: Excel Values Returned as NULL Using DAO OpenRecordset
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35272826
Уважающий ВсехВас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.zmey.1977.ru/Access_To_Excel_Ru.htm
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35272916
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Уважающий ВсехВасTo klen
"Когда в одной колонке есть значения и текстовые и числовые и т.д., запросы ADO работает неправильно."
Если не трудно,если под рукой, НЕ СПЕША ,отбросив лишнее из своей программы,... пример к вышесказанному.(Максимум комментариев, если не трудно).
Видимо, речь о том, что Аксесс распознаёт тип полей Экселя сам на основании данных в первой строке. И иногда делает это не так, как хотелось бы.Да, именно про этот случай, когда ADO возвращает, в некоторых записях/полях, пустые значения
а на самом-то деле значения в excel-е есть, только другого типа
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #35273107
Уважающий ВсехВас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приношу извинения.Поздно было,устал, думал Access ->Excel
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ФАК: работа с Экселем
    #39365133
VitAks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тут вот, в нашем же факе, 5579496
есть такое, но тоже не работает

klen_вот так приспособился открывать
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Dim xls As String:      xls = CurrentProject.Path & "\Книга1.xls"
Dim lst As String:      lst = "Лист1"

Dim XL As Excel.Application
Dim WB As Excel.Workbook
Dim SH As Excel.Worksheet

Set XL = CreateObject("Excel.Application")

Set WB = XL.Workbooks.Open(xls)
If Err.Number <> 0 Then         'если такой проверки я не делаю, то excel остаётся в памяти, в случае ошибки открытия
    XL.Quit
    Set XL = Nothing
End If

Set SH = WB.Worksheets(lst)
If Err.Number <> 0 Then
    WB.Close
    XL.Quit
    Set XL = Nothing
End If

здесь цикл или что-то ещё

'   WB.Save
    WB.Close
    
    XL.Quit
    Set XL = Nothing


а вот свойство MultiUserEditing и метод ExclusiveAccess ещё ни разу не использовал
...
Рейтинг: 0 / 0
ФАК: работа с Экселем
    #39365365
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitAks,

А что не работает-то конкретно? Код правильный. Проверьте наличие файла, листа в нем и то, что не открыт другой программой.

А вообще код, конечно, атас. Обычно используют On Error GoTo, а не проверяют на наличие ошибки после каждой команды.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ФАК: работа с Экселем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]