|
![]() |
#1 |
Moderator
|
А придать этому сборищу данных более сговорчивый формат? Например, xls?
Задачка разовая или постоянно надо будет парсить? |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Gustav
А придать этому сборищу данных более сговорчивый формат? Например, xls?
Задачка разовая или постоянно надо будет парсить? Да и файлов несколько штук, отличных по формату. Придать сговорчивый формат - это и значит перегнать нужные данные из хтмл в Ексель с помощью чего-либо? |
|
![]() |
#3 |
Moderator
|
Цитата:
Сообщение от Avick
Задача ежемесячная.
Да и файлов несколько штук, отличных по формату. Придать сговорчивый формат - это и значит перегнать нужные данные из хтмл в Ексель с помощью чего-либо? Конкретно в Excel - что-нибудь типа объекта QueryTable. Через этот QueryTable - можно хоть к файлу, хоть напрямую в web. P.S. Посмотрите, как при помощи Excel выкачивается из веба табличная информация здесь: Получение в Excel полного списка пользователей AxForum Там пример на VBA, но сделать перевод на X++ задача вполне посильная. P.P.S. Поиграйтесь сами прямо в Excel: меню Данные - Внешние данные - Создать Web-запрос. Запишите свои действия макрорекордером. Уверен, Вам понравится. ![]() Последний раз редактировалось Gustav; 12.07.2006 в 16:37. |
|
![]() |
#4 |
Участник
|
[QUOTE=Gustav]
Конкретно в Excel - что-нибудь типа объекта QueryTable. Через этот QueryTable - можно хоть к файлу, хоть напрямую в web. [QUOTE] Попробовал. Возник вопрос: как мне прямо в коде сказать какое именно слово из файла в какую именно ячейку класть? Без регулярных выражений не обойтись, как мне кажется... |
|
![]() |
#5 |
Moderator
|
Цитата:
Сообщение от Avick
Без регулярных выражений не обойтись, как мне кажется...
![]() Цитата:
Сообщение от Avick
Возник вопрос: как мне прямо в коде сказать какое именно слово из файла в какую именно ячейку класть?
один - "приёмник", куда всасывается информация из веба и автоматически распределяется по конкретным ячейкам этого листа - т.е. Ваши "слова" сами залетают в эти ячейки без Вашего участия, второй - "накопитель", где Вы уже раскладываете данные "по полочкам", т.е. по колоночкам, читая эти данные из "приёмника" P.S. У вас данные - табличного вида? Или хаотичного? Вы смотрели пример с "Пользователями АхФорум"? Там содержимое "приемника" меняется в цикле 60 с лишним раз (по 100 пользователей на одной странице): запросили очередную страницу, она загрузилась в "приемник", прочитали ее данные в "накопитель", в "накопителе" продвинулись вниз по таблице на последнюю заполненную "запись", запросили следующую страницу в "приемник" и т.д. в цикле. По окончании процесса интересующие Вас данные находятся в "накопителе" ("приемник" больше не нужен, можно выбросить его в пропасть как суп харчо). Из "накопителя" грузите данные в Аксапту любым из желаемых методов (через ODBC, ADO и т.п.). Последний раз редактировалось Gustav; 12.07.2006 в 17:39. |
|
![]() |
#6 |
NavAx
|
Цитата:
Сообщение от Gustav
На эту тему Вы macklakov-а терзайте...
![]() Есть класс TextBuffer, у него метод find, который принимает регулярные выражения. Работает он по аналогии с функцией match. Работает, правда, довольно специфически и не всегда его поведение очевидно
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
![]() |
#7 |
Moderator
|
Продолжаю дуть в свою эксельную дуду. Вся информация на веб-странице с точки зрения Ёкселя - это сборище таблиц. Причем от нормальных таблиц (несколько столбцов, много строк) до примитивно-вырожденных, состоящих из одной-единственной ячейки (т.е. один столбец, одна строка). Эти таблицы имеют номера, начиная с 1.
Например, список пользователей АхФорума - это чётко таблица № 13 (см. строку в коде примера: .WebTables = "13") на соответствующей странице. Это собственно таблица, где информация об участниках - начинается со строки заголовков ("Имя","Регистрация","Сообщения" и т.д.) и заканчивается строкой типа "Показано с 1 по 30, из 6129.". Можете примерно представить содержание таблиц с 1 по 12 на этой странице - это всё, что находится перед строкой заголовков "собственно таблицы". Понять, где именно какая таблица по номеру, поможет мастер web-запросов Excel. И эта "собственно таблица" будет носить номер 13 до тех пор, пока в дизайн всей страницы не будут внесены изменения. В этом случае номер таблицы может измениться. Пользователи АхФорума - устойчивая страница. Расположение ее первых 12 таблиц - неизменно, соответственно номер "13" пока устойчиво закреплен за "собственно таблицей". Другое дело - профиль конкретного участника (ну, давайте меня). Допустим, мы захотели регулярно читать его полученные и выданные репутации. Видно, что это хорошо организованные нормальные таблицы, расположенные друг за другом. И они имеют свои конкретные номера в ДАННЫЙ момент времени, пока остается неизменным состав информации перед этими таблицами. Но если я завтра захочу в свой профиль добавить информацию о дне рождении (сейчас это поле пустое и оно расположено до таблиц репутаций - а сейчас его просто нет на странице в блоке "Дополнительная информация", потому что оно пустое!), то номера таблиц репутаций изменятся. Также изменятся они, если мы просто перейдём к профилю другого участника, у которого "заполненность" полей отличается от моего. Однако и на этот случай "номерной неустойчивости таблиц" есть свое решение: веб-страница рассматривается целиком, без деления на таблицы, а точки начала интересующих нас таблиц определяются нахождением на листе "приёмник" ячеек, содержащих текст "Участник получил одобрение от других" и "Участник одобрил других" соответственно. Последний раз редактировалось Gustav; 12.07.2006 в 19:02. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от macklakov
Не надо меня терзать! Я и так все скажу!
Есть класс TextBuffer, у него метод find, который принимает регулярные выражения. Работает он по аналогии с функцией match. Работает, правда, довольно специфически и не всегда его поведение очевидно |
|