Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2015, 13:42   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык проблема не в excel-e скорее всего, а в корявости версии делфина. Запросом не обязательно ODBC-шный провайдер. Провайдер JET OLE DB хавает excel-таблицы (2003) и есть по умолчанию в винде. Если ADO в том делфине доступно, то можно пробовать. Ему и excel установленный не нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 03.11.2015 в 13:44.
Аватар вне форума Ответить с цитированием
Старый 03.11.2015, 13:50   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

когда у меня подобная ситуация возникла несколько лет назад,
я взял Portable Turbo Delphi Lite 1.0d ( aka BDS 2006), поставил туда пиратку XLSReadWriteII и читал XLS файлы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2015, 14:05   #13
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дык проблема не в excel-e скорее всего, а в корявости версии делфина. Если ADO в том делфине доступно, то можно пробовать. Ему и excel установленный не нужен
Ну ругается, во всяком случае, на Эксель... При этом совершенно спокойно работает с ним, если он уже запущен, и вообще без проблем работает с Вордом. Глюк и ругание на отсутствующий dll происходит только при попытке открытия файла если Эксель не был ранее запущен.
А ADO у меня тоже нет...

В попытках найти библиотеку, которую не надо устанавливать, наткнулся на интересную pdf-ку, которая, возможно, смогла бы мне помочь. Но проблема в том, что я и английский не знаю, и "машинный" язык не понимаю так хорошо...

Библиотек, похоже, вообще бесплатных нет, не говоря уж о бесплатных без установки...

Последний раз редактировалось Ship_1; 03.11.2015 в 14:21.
Ship_1 вне форума Ответить с цитированием
Старый 03.11.2015, 18:58   #14
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
Восклицание На всякий случай

>>> А ADO у меня тоже нет...
Точно нет?
На другом форуме я находил готовые решения, если ни одно из них не заработает, то думаю проблема в рабочей станции...
Пример 1
Пример 2
SQLPowerUser вне форума Ответить с цитированием
Старый 03.11.2015, 19:14   #15
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Цитата:
Глюк и ругание на отсутствующий dll происходит только при попытке открытия файла если Эксель не был ранее запущен
Так может тогда проще сначала запустить EXCEL, чтобы не было глюков?
FaTaL вне форума Ответить с цитированием
Старый 10.11.2015, 17:54   #16
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Так может тогда проще сначала запустить EXCEL, чтобы не было глюков?
Но тогда лично у меня возникает второй вопрос: как понять когда Эксель уже запустился, файл загрузился и продолжить работу программы? Через таймер долбать "CheckExcelRun" до положительного результата? Или есть более "красивый" способ? Ответ на этот вопрос был бы интересен, но в данном случае не важен, т.к. даже запуск через ShellExecute вызывает ошибку.

Цитата:
Сообщение от SQLPowerUser Посмотреть сообщение
>>> А ADO у меня тоже нет...
Точно нет?
На другом форуме я находил готовые решения, если ни одно из них не заработает, то думаю проблема в рабочей станции...
Вкладка, во всяком случае, с компонентами отсутствует Поэтому второй пример не пригодился: даже скомпилировать нечем. И первая часть первого, где запуск через ADO.
А вот во второй части первого примера поиск по экселю двумя типами: стандартным через OLE, который у меня и не работает, и ещё каким-то вторым способом, не через OLE, который сработал!!! СПАСИБИЩЕ!!!!! Буду разбираться в этом способе.
Получилось считать данные. Но почему-то не все. Не считывает "№ п/п", "Внутренний номер", "Кабинет №"... Возможно и какие-то другие позиции. Почему-то считываемое значение не хочет напрямую складываться со строкой, вызывает ошибку
Цитата:
Could not convert variant type (String) into type (Double)
Пока не поставил
Код:
If (MyRecordset.Fields[i-1].Value<>null)  then
тоже ругался, но про конвертацию Null в String. Как понимаю, это из-за пустых ячеек.
Вот основная часть кода:
Код:
    while not MyRecordset.eof do
    begin
      Strk:='';
      for i := 1 to MyRecordset.Fields.Count do
      begin
        If (MyRecordset.Fields[i-1].Value<>null) then
        begin
          Val:=MyRecordset.Fields[i-1].Value;
          Strk:=Strk+#9+Val;
        end;
      end;
      TotList.Add(Strk);
      inc(RecNo);
      MyRecordset.MoveNext;
    end;
Можно ли чем-нибудь заменить Value (MyRecordset.Fields[i-1].Value) чтобы он всё воспринимал как текст и не ругался на типы?
И ещё меня терзают смутные сомнения... Не говорит ли "ADODB.Connection" о том, что это тоже через ADO?..

Последний раз редактировалось Ship_1; 10.11.2015 в 19:05.
Ship_1 вне форума Ответить с цитированием
Старый 10.11.2015, 20:44   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
XLSReadWriteII for Delphi
отличная штука. MS Excel вообще не нужен. Один недостаток - штука коммерческая, платная.
Меня терзают смутные сомнения...
Изображения
Тип файла: jpg 1576937.jpg (46.9 Кб, 127 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.11.2015, 20:56   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Не говорит ли "ADODB.Connection" о том, что это тоже через ADO
Еще как говорит. Делфийские компоненты то же самое используют.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.11.2015, 11:22   #19
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Хм... А я думал это не сложный вопрос для тех, кто знает ADO, но почему-то он так и остался без ответа... Может, его просто не заметили после всего текста? Можно ли чем-нибудь заменить Value (MyRecordset.Fields[i-1].Value) чтобы он всё воспринимал как текст и не ругался на типы? .Text не прокатывает, .asString тоже. Выдают ошибку "Method 'asString' not supported by automation object." Найти как работать с ADO без компонентов почему-то не удалось. Где-то очень далеко это зарыто в интернете.
Ship_1 вне форума Ответить с цитированием
Старый 13.11.2015, 11:27   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Value имеет тип Variant и просто так заменить чем-то вроде AsString не очень просто. Нужно писать свой функционал по распознованию типа данных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертер из .xls в .mdb. Как сделать без ADOTable alex1313 Lazarus, Free Pascal, CodeTyphon 6 30.03.2013 17:45
Как работать с *.xls файлами без Excel'я? Нур Общие вопросы Delphi 8 15.12.2010 07:16
подключение к Excel из delphi через ODBC.возможно ли это без глюков? betirsolt БД в Delphi 0 13.06.2010 01:05
Cохранить в Excel xls zlodey Общие вопросы Delphi 1 07.08.2009 14:42
Загрузка XLS без драйвера Mirosoft.Jet.OLEDB.4.0 Cawboy SQL, базы данных 1 22.07.2009 20:58