Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос к документу excel (число прочтений - 9661 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Запрос к документу excel
21. Марта 2012 :: 03:43
Печать  
Хочу использовать ODBC драйвер для получения данных из документа ексель.
Код
Выбрать все
	Состояние("Считывание файла excel...");
	_база =СоздатьОбъект("ODBCDatabase");
	Если _база.Соединение("DRIVER=Microsoft Excel Driver (*.xls); DBQ=" +Каталог+Файл) =0 Тогда
		Предупреждение("Ошибка открытия файла", 60);
		Возврат;
	КонецЕсли;
	_рс =СоздатьОбъект("ODBCRecordSet");
	_рс.УстБД(_база);
	ТекстЗапроса ="
	|select  * -- top 1
	|from [A1:FF]
	|";
	_ит =СоздатьОбъект("ИндексированнаяТаблица");
	ит = _рс.ВыполнитьИнструкцию(ТекстЗапроса, _ит);
	ит.Показать(); 


Выдает:
Код
Выбрать все
ит = _рс.ВыполнитьИнструкцию(ТекстЗапроса, _ит);
{Y:\ЗАГРУЗКА ПРАЙС-ЛИСТА ИЗ ЕXEL.ERT(585)}: State 42000, native 4294963790, message [Microsoft][Драйвер ODBC Excel] Ошибка синтаксиса в предложении FROM. 


  В чем может быть причина? Как универсально указывать выражение после From?
(файл ексель во вложении)
  

Gost.zip ( 4 KB | Загрузки )

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к документу excel
Ответ #1 - 21. Марта 2012 :: 04:15
Печать  
по моему имя таблицы это имя листа
смотри http://www.connectionstrings.com/excel

Цитата:
Цитата:
Driver={Microsoft Excel Driver (*.xls)}; DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;

SQL syntax "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.

  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #2 - 21. Марта 2012 :: 04:31
Печать  
Z1 писал(а) 21. Марта 2012 :: 04:15:
по моему имя таблицы это имя листа
смотри http://www.connectionstrings.com/excel

Цитата:
Цитата:
Driver={Microsoft Excel Driver (*.xls)}; DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;

SQL syntax "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.


Всё верно - имя таблицы это имя листа. Тогда вопрос: как мне получить имена всех листов?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к документу excel
Ответ #3 - 21. Марта 2012 :: 04:34
Печать  
al_zzz писал(а) 21. Марта 2012 :: 04:31:
Z1 писал(а) 21. Марта 2012 :: 04:15:
по моему имя таблицы это имя листа
смотри http://www.connectionstrings.com/excel

Цитата:
Цитата:
Driver={Microsoft Excel Driver (*.xls)}; DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;

SQL syntax "SELECT [Column Name One], [Column Name Two] FROM [Sheet One$]". I.e. excel worksheet name followed by a "$" and wrapped in "[" "]" brackets.


Всё верно - имя таблицы это имя листа. Тогда вопрос: как мне получить имена всех листов?

не помню но  там идет select из какой то системной таблицы
и в результате возвращаются все листы данного файла.

  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #4 - 21. Марта 2012 :: 05:49
Печать  
Возможно, всё дело в том, что файл сохранен из 1с в формате 5/95. Yoksel его тоже не может открыть. Есть ли какой-нибудь способ импортировать информацию из такого файла без считывания простым перебором?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Запрос к документу excel
Ответ #5 - 21. Марта 2012 :: 06:28
Печать  
Открыть как ОЛЕ-объект, сохранить в более цивильном формате?
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #6 - 21. Марта 2012 :: 06:30
Печать  
Satans Claws писал(а) 21. Марта 2012 :: 06:28:
Открыть как ОЛЕ-объект, сохранить в более цивильном формате?

Это программно из 1с? Можно поподробнее?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к документу excel
Ответ #7 - 21. Марта 2012 :: 06:33
Печать  
|from [Sheet1$A1:FF]
  

1&&2&&3
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #8 - 21. Марта 2012 :: 06:37
Печать  
trad писал(а) 21. Марта 2012 :: 06:33:
|from [Sheet1$A1:FF]

State 42000, native 4294963790, message [Microsoft][Драйвер ODBC Excel] Ошибка синтаксиса в предложении FROM.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос к документу excel
Ответ #9 - 21. Марта 2012 :: 06:58
Печать  
-- top 1
это еще убери
  

1&&2&&3
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #10 - 21. Марта 2012 :: 08:57
Печать  
trad писал(а) 21. Марта 2012 :: 06:58:
-- top 1
это еще убери

Убрал всё закоментированное - вроде бы заработало.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос к документу excel
Ответ #11 - 21. Марта 2012 :: 11:07
Печать  
al_zzz писал(а) 21. Марта 2012 :: 08:57:
trad писал(а) 21. Марта 2012 :: 06:58:
-- top 1
это еще убери

Убрал всё закоментированное - вроде бы заработало.


только учти что если в столбце "понамешены" разные типы
и числа и строки то как правило select выдает ерунду.
во всех других случаях это ИХМО наилучшее решение чтения xls
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #12 - 21. Марта 2012 :: 13:30
Печать  
Z1 писал(а) 21. Марта 2012 :: 11:07:
только учти что если в столбце "понамешены" разные типы
и числа и строки то как правило select выдает ерунду.
во всех других случаях это ИХМО наилучшее решение чтения xls

Нет. В этом плане у меня всё Ок! Требуется затягивать счета от поставщиков, а там всё стандартно.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #13 - 22. Марта 2012 :: 01:06
Печать  
Извините, что ухожу далеко от темы.
Известно, что в одной из колонок документа ексель (не известно, сколько строк и сколько колонок в документе) на определенной строке выводится слово "Товар"(впрочем, какое слово выводится не принципиально). Как составить запрос, чтоб получить номер этой строки?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Запрос к документу excel
Ответ #14 - 22. Марта 2012 :: 01:36
Печать  
trad писал(а) 21. Марта 2012 :: 06:33:
|from [Sheet1$A1:FF]

trad, не подскажете, как определить имя листа в документе ексель?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать