Delphi + Excel

Тема в разделе "Pascal and Delphi", создана пользователем GriffinSC, 18 ноя 2010.

Статус темы:
Закрыта.
  1. GriffinSC

    GriffinSC Начинающий Новичок

    Здравствуйте!
    Я начинаю только писать на D7. Первая моя задача такова: Есть Excel файл 97-2003 мне в нём забита инфа с A1 до J18. В первой строке наименования столбцов, в каждой строке инфа об одном человеке. Мне необходимо просматривать каждого человека по-очереди и если необходимо изменять одно из этих полей. Допустим ячейку из столбца I.
    Т.к. не имею инфы о всех компонентах попытался в поле мемо что-то выгрузить, но D7 сразу ругнулся на несоответствие типов.
    Помогите пожалуйста.
    Содержимое видно только авторизованным пользователям, пожалуйста, Войдите или зарегистрируйтесь
     
  2. Загрузка...

    Похожие темы Форум Дата
    Excel В Delphi Цикл По Строкам Delphi - Система 8 сен 2012
    При передаче даты из delphi в mssql, сдвигается дата Delphi - Базы данных Среда в 11:09
    Тесты Delphi Pascal and Delphi 14 дек 2014

  3. GriffinSC

    GriffinSC Начинающий Новичок

    Пойду искать что такое АДО... А то до этого встречал получается только ОЛЕ.
     
  4. BVS

    BVS Не подтвержденный

    А ведь действительно несоответствие типа :).
    Почитай пожалуйста инфу по работе с TMemo.
    А насчет Excel.Range['A5:J5'] уж лучше Range['A1'].Value (если конечно у тебя ячейки не объедены).
    Насчет ADO почитать не вредно. Однако с Ole понятней и к тому же если редактировать книгу с помощью Excel-я доступ через Ado может и пропасть :-(. ADO хорошо когда надо создать побыстрому книгу и скинуть в нее таблицы.
     
  5. BVS

    BVS Не подтвержденный

    ADO работает с книгой как с базой данных. Иногда при сохранении книги меняется структура листа и к нему становиться невозможно обратиться как к таблице. (По крайней мере в 2003 офисе это точно было, в 2007 может и исправили (хотя я сомневаюсь: все таки excel дает гораздо больше возможности чем просто таблица в БД, и соответственно обычных методов работы с таблицами через SQL запросов для него недостаточно).
    А почему при OLE должно пропадать? Ведь OLE использует специальные интерфейсы для работы с excel`ем. И его функциональности вполне достаточно для полной работы с excel`ем (а не только на уровне БД).
    С какой это стати?
    Доступ через ADO идет только через SQL запросы, а датасетю.ФилдБайНэйм('Имя'), это всего лишь компонента которая в конечно счете все твои действия с БД переводить на SQL запросы. А как ты осуществишь SQL запрос к объеденным ячейкам (а если объедены и строки)?
     
  6. BVS

    BVS Не подтвержденный

    А я к сожалению встречал. Стоило нажать на кнопку сохранить в 2003 excele и все... Доступа через ADO нет :(

    Это уже запрос объеденных ячеек (т.е. из заданной задачки можно предположить: что они есть).

    TExcelApplication - тоже есть компонента.

    Но автор сам в задачке выбрал OLE. И в место того чтобы подсказать ты его запутываешь каким то ADO (может он впервые еще сталкивается с SQL). Да к тому же еще не зная подойдет ли его файлик (а судя из задачки он у него уже есть) для подключения через ADO.


    Действительно сказка - при отсутствующем подключении.

    Сдесь полностью согласен: вносить данные в новую книгу очень удобно и быстро. А вот извлекать запаришься - особенно если пользователь что то изменил в книге (для этих случаев существуют БД и СУБД (excel к ним не относиться)).

    которые находятся в excele (как не рассматривая оного этого добиться) ;)
     
  7. BVS

    BVS Не подтвержденный

    А может OLE DB (Зачем мелочиться).

    Судя по этой строчке автор не знает как обращаться с TMemo. А ты его хочешь приобщить к SQL.

    Я пользуюсь своим опытом, а вот ты кажется точно телепатией обладаешь - раз уверен в своей ADO по отношению к формату которой даже БД не является.
     
  8. BVS

    BVS Не подтвержденный

    Вижу что мы с тобой разговариваем на разных языках. У нас с тобой разный уровень (опыт) в программировании.
    Зря только сходил на этот скудный источник информации.
    Я прекрасно знаю что ADO это всего лишь надстройка для OLE DB (поэтому и написал зачем мелочиться).
    Хвать относиться к вопросам как к лабораторным (так никогда не напишешь полностью рабочую версию программы). Надо все таки рассматривать все возможные аспекты и предполагаемые трудности. А то что пользователь прекрасно умеет править Excel файлы всем известно.
    Как ты думаешь они (пользователи) нажимают эту кнопку?
     
  9. BVS

    BVS Не подтвержденный

    Они из тьмы редактирования и сохранения действительно могут один раз удалить файл. Но вот сохранение обычная процедура поэтому ее как раз надо рассмотреть (и вам уважаемыйsax_ol тоже).

    Видно кто то привык на лабораторных "дурить" преподавателей (сдавая программы которые могут работать только при определенных условиях). А потом пользователи ваши программ начинают повсеместно вспоминать Била Гейтся и глючную винду :).

    Замечу что тема называется [Delphi + Excel], а не [ADO+ Excel] .
     
  10. BVS

    BVS Не подтвержденный

    А сохранение как раз и завершает редактирование.

    А затем что пользователь вашей чудо программы которая считывает данные с excel листа посредством SQL запросов в один прекрасный день (когда пользователь наплюя на вашу программулину отредактирует этот файл в офисе (на что он имеет полное право)и сохраня изменения) выдаст что доступ к файлу (который продолжает нормально читаться в офисе) невозможен. Интересно что он в этот момент подумает, будет делать, что и кого вспоминать, и какие инструкции разработчик данного продукта ему даст?


    Насчет ссылки на темы я имел ввиду что для автора желательно рассмотреть все возможные способы работы с Excelем а не только с ado.

    PS: Преимущество ADO над OLE ты так еще и не показал. :-(. И к тому же заставляешь меня повторяться - что говорит о невнимательности (мне достаточно уже отвечать своими же цитатами).
    Преимущество же OLE над ADO (в рамках Excelя) я уже показывал
    И вы с этим согласились

    А некоторые фразы мне вообще не понятны
    -как она соотноситься с данной темой?
    - тупик может образоваться если использовать ADO и excel, а Ole - выход из этого тупика. Только некоторые его и видеть не хотят.
     
  11. BVS

    BVS Не подтвержденный

    Если открыть БД в соответствующем редакторе (и именно в соответствующем для данной БД) то все будет работать как и прежде. Вопросы же взаимосвязоности таблиц (который может нарушить редактор) я не рассматриваю т.к. для этого обычно используется СУБД с определенным доступом к файлам с данными, и к этим файлам трудно добраться (если ты конечно не системный администратор на сервере, но с них спрос совсем другой).
    Что касается Excelя то для него соответствующий редактор это офис.

    Отредактировать xls файл в офисе никак нельзя назвать "не следует". К тому же этот файл уже есть (следует из задачи) интересно откуда он взялся :facepalm:. Отсранение от проблемы путем фразы "проблеммам разработки не имеет никакого отношения." характеризует программиста в глазах у клиента не очень хорошо.

    Мне хватило пол часа (и то только потому что давно не работал с Ole) на написание этого кода:
    Содержимое видно только авторизованным пользователям, пожалуйста, Войдите или зарегистрируйтесь
    При этом я решил след. задачи:
    - А зачем (разве автор собрался писать БД)
    - всего то 18 строк.
     
  12. BVS

    BVS Не подтвержденный

    читаете не внимательно (может хватит).
    Для тех кто в танке объясню на примере. Для БД в формате mdb существует специализированный редактор под названием Microsoft Access, как вы думает что будет с этим файлом если его там отредактировать. А какая ситуация с xls?
    Что было раньше "курица или яйцо"? В нашем случае файл появился раньше программы (и наша задача написать программу для этого файла (а никак не наоборот). А если структура файла нам не подойдет? Что поотрывать руки заказчику? А если у заказчика нет мозгов - то пусть платит больше подберем любой вариант (даже самый трудоемкий). Мне интересно xml файлы вы тоже через ado запускаете? Я лично предпочитаю пользоваться парсерами ;). Особенно мне интересно как ini файла с ado сочетаются?.
    Я уже отвечал что она делает :) Будте внимательней. То что с ado писать ничего не надо я заметил - ведь вашего варианта еще не было :)

    Скоко раз напоминать прописную истину что EXCEL может хранить таблицы БД но необязательно в виде таблицы БД, т.е. он не относится к формату БД и поэтому к нему не всегда можно обратиться через SQL (разве это для ADO нечиго не меняет?)

    -несколько форматов + можно предугадать что есть и множество вариантов одного формата. Т. е. совсем другой уровень сложность чем то что запросил автор (существует один вариант (к сожалению незвестный) одного известного формата (excel)). В твоем случае однозначно приводит к одному стандарту и никаких отклонений от оного. В случае с автором тратить время на разработку стандартов и инструкций к ним - просто глупо.


    - это ты говоришь. А автор попросил помочь ему разобраться как работать с Excelем через delphi. Будь пожалуйста повнимательней и обращай внимание хотябы на название темы.


    - Не зная что находится в файле (а может данные уже поменялись, а не такие как ты себе представляешь). И что переписывать усю программу, или достаточно будет разбавить ее несколькими процедурами?.

    -бессмысленный подход. Например: у клиента поменяется версия офиса, а вместе с ней и формат файла. Если для Ole это будет по боку то для самостоятельного разбора файла придется переписывать программу (а для этого придется изучить еще и новую структуру xls файла).
    Уважаемый Вас не понять. (Вы уже не помните что и сами писали :) ).
     
  13. BVS

    BVS Не подтвержденный

    Достойный ответ на поставленную задачу.

    Еще раз как называется тема?. Или excel у Вас вышел из состава этого продукта?

    логики программы (так как программа еще не написана) еще у автора нет, а вот вмешиваться уже есть куда ;). И как это можно объяснить?

    я тоже :)

    ваш код в студию (посмотрю насколько он эффективный)

    я не говорил что формат один. (Внимательность) Я сказал что стандарт один. А форматов подчеркивал что несколько. (Хотя для Вас это наверно одно и тоже :).

    если просто то покажите работоспособную программу.

    ado выбирает сразу все строки заданные в SQL запросе, а автор просить пройтись (остановившись на каждой (т. е. выбрав человека)) по строкам (Ole это позволяет). Или предлагаеш на каждую строку (человека) писать отдельный запрос?

    Уважаемый не умеет читать код?

    Автор указывал форматы хранения данных, как они расположены (по центру ячейки, справа, слева), какого шрифта; какова разметка листа. Какой у него вид? и многое другое. Был бы астрал было гораздо проще :(

    судя по вашим ответам да.

    имел. И могу смело утверждать что Excel.Application будет работать со всеми версиями микрософт офиса
    Вам - да. ADO - нет :). Что и пытаюсь вам многоуважаемый доказать.
     
  14. BVS

    BVS Не подтвержденный

    Вижу что мне здесь больше делать нечего. Задача в рамках которые указал автор - Вами не решена. Я в Экселе проще смогу обработать данные. Зачем мне еще писать программу которая будет выводить табличку :).
    Автор же просил хотябы использовать tmemo. А где выбор по Человеку?

    А зря. Назови хотя бы одну версию офиса где он не заработает?

    Прошу у Вас многоуважаемый прощение - забыл поставить знак "?". Именно что автор вскользь прошелся по файлику.


    тем более в нем разбираться. Теперь мне Ваша невнимательность понятна. Насчет русского языка я лучше промолчу :)
     
  15. BVS

    BVS Не подтвержденный

    - Вот именно. А версии COMа ставиться вместе с офисом. И соответственно какое дело Excel.Application становиться до версии (ведь в любом случае будет стоять нужная). Или Вы многоуважаемый плохо понимаете принцип работы OLE.
    - нет это я про редактор :)
    Что до моего кода то это набросок (притом польностью удовл. автора в рамках его задачи (будем надеется что он правильно ее написал))

    Автор утверждал что в каждой строки содержаться данные по человеку и просматривать нужно по очереди по человеку (о никаком поиске и речи не было). А Вы просто сразу выдали весь файл :).

    - а что, для отладке очень даже удобно. Повторяю это набросок, а не готовое решение.
     
  16. BVS

    BVS Не подтвержденный

    Учи принципы работы с COM объектами. От перстановки офиса программу переписывать не нужно. Хотя пока Многоуважаемый не узнает как работают COM объекты он про это и знать не будет. :)

    - у автора 10 внимательно прочитайте задачу :).

    я это заметил :(. (ты все еще не ответил к xml и ini файлам тоже обращаеся через ADO?).

    - автору это скажи (задачу он иначе ставил) :(.

    Открываешь в редакторе - тоже грид только писать ничего не надо и функциональности поболее :(.
     
  17. GriffinSC

    GriffinSC Начинающий Новичок

    Ничего себе вы тут расписали :fuckyou:
    Я в четверг начал делать через АДО, пока что-то получается. Почему так долго? - спросите вы. Потому как тяжело дается (SQL чтобы вспомнить что такое пришлось конспект перечиты :( Как упрусь во что-либо покажу что не получается. Вот что у меня на данный момент:
    Содержимое видно только авторизованным пользователям, пожалуйста, Войдите или зарегистрируйтесь
     
Статус темы:
Закрыта.

Поделиться этой страницей