XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Всем привет ! Небольшое вступление )
Рутина такая - ежедневная (а то и чаще) загрузка всевозрастающего множества прайс-листов из Excel от поставщиков пока себя не изжила ) Далеко не у всех у них есть Web сервисы, есть конечно и API агрегаторы, но удобно (и дешевле) иметь их под рукой еще и в родных DBF таблицах. Особенно при массовых проценках/переоценках и расширении ассортимента. Выложил в облако один из них. cloud.mail.ru Нужно загрузить его скажем в такую таблицу (порядок полей Не соответствует колонкам в Excel):
Как бы вы это сделали ? )) ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
PaulWist Сообщений: 14741 Дата регистрации: 01.04.2004 |
Решение не смотрел. Сделал бы, а-ля sqlexec(select * from Лист1) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: XLS(x) -> DBF | |
---|---|
shumik73 Сообщений: 554 Откуда: Алматы Дата регистрации: 10.05.2006 |
Равиль да это просто!
![]() Создаешь для загрузки таблицу в базе. Прописываешь поля которые будут заполнены - константами Прописываешь поля которые будут заполнены - во время загрузки Вызываешь вот такую форму и передаешь в нее нужные параметры [attachment 37029 Excel.png] Дальше идет работа: 1) Открываешь Exсel - файл с диска и вынимаешь данные из него или копируешь через буфер 3) Визульно редактируешь данные под заданный шаблон (удадяем мусор, сдвигаем) 3) Запускаешь функцию анализа данных - ищем начальный и конечный столбец, ищем начальную и конечную строку 4) Выделенный фрагмент выделяется 5) Загружаешь и по ходу отлавливаешь конфликты 6) Неудачно - очищаешь в базе все что успел загрузить и заново загружаешь. Если бы все Excel-файлы были одного формата - то работа бы упростилась Иначе приходится подгонять и следить чтобы никто не вздумал менять шаблон Делегируешь другому эту сложную задачу, а сам идешь курить. И всЁ ![]() Исправлено 1 раз(а). Последнее : shumik73, 10.01.25 14:49 ![]() |
Re: XLS(x) -> DBF | |
---|---|
AndyNigmatec Сообщений: 1675 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Как я делаю (задача подобная):
сразу оговорю - использую автоматизацию самого эксель - не всех такой вариант устраивает. 1. создаю курсор со структурой соответствующей импортируемым данным из эксельки 2. открываю эксельку и одним чохом забираю все данные с нужного листа в подготовленный курсор 3. из курсора забираю и добавляю нужное уже в свои табл понятно что вызываемые экземпляры экселя юзверю не показываю (ни к чему эти мелькания и тормоза) Сам импорт работает весьма шустро, основной тормоз - это хоть и скрытое, но все равно открытие экселем файла. Также к минусам такого подхода можно отнести то что необходимо знать структуру импортируемых данных (в том числе и порядок столбцов имеет значение), из-за чего приходится использовать несколько вариантов импорта (различие в п.1 - создание курсора нужной структуры). ![]() |
Re: XLS(x) -> DBF | |
---|---|
BOBAN Сообщений: 646 Откуда: Солигорск Дата регистрации: 05.07.2004 |
|
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Паш, пробовал и так на коленке - вполне но притормаживает заметно. ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Женя, симпатично у тебя сделано ! Вижу только 1 минус - под шаблон подгонять приходится а прайсы все такие разные ... ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Андрей, спасибо - я тоже нечто похожее делаю - через промежуточный курсор ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Владимир, спасибо - гляну. Еще Сергей не отозвался (ssa) - знаю что он в Excel как рыба в воде )) ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
shumik73 Сообщений: 554 Откуда: Алматы Дата регистрации: 10.05.2006 |
А это другая задача - консолидация! 1) Создаешь справочник поставщиков прайсов 2) Для каждого готовишь шаблон и таблицу (в моем загрузчике на второй вкладке "схема" есть настройки где прописывается для 30 столбцов - что с ними делать: пропускать или конвертировать) 3) При загрузке первым делом выбираешь поставщика, происходит настройка "схемы" и загружаешь по шаблону. 4) Осталось за малым собрать все в одном формате. а для этого нужно продумать и заложить столько полей чтоб любой из прайсов подошел. И чтобы потом соответствующие колонки совпадали. Это что, для аптечной компании мы потом приводили все наименования к одному формату. Закладывали "словарь" и варианты исполнения. И когда шла загрузка то происходило разпознование и в базу ложились правильное название. Правда приходилось постоянно обучать "словарь" - когда новый поставщик или новое наименование появлялось. Но этим занимались каждую неделю соответствующие закрепленные операторы. Исправлено 1 раз(а). Последнее : shumik73, 10.01.25 16:48 ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Интерфейс загрузки из Excel у меня такой для прайсов - не судите строго - заложен еще в начале века
![]() Сначала импорт из Excel в промежуточный курсор, Затем на экране можно сопоставить/уточнить колонки. Затем во время загрузки настройки колонок запоминаются для каждого поставщика свои. Настройки редко меняются. Как был сделан импорт : - объект Excel открывает и пересохраняет файл в текстовик с табуляторами - быстро. - аппенд в курсор из текстовика - тоже быстро. - в рабочую таблицу заполняю из курсора с учетом настроек колонок. Минус - нужен Excel (или аналог) ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Да, так и сделано - одинаково думаем ! ![]() ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
AndyNigmatec Сообщений: 1675 Откуда: Волгоград Дата регистрации: 28.06.2015 |
а зачем промежуточное сохранение в текстовик, только лишний тормоз, нормально все сразу с листа в курсор забирается. Типа такого:
![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Кстати да ... надо попробовать - там не будет ошибки несоответствия типов полей при Append ? Потому что я не знаю заранее какие будут типы полей в промежуточном курсоре - они у меня все текстовые ... ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
AndyNigmatec Сообщений: 1675 Откуда: Волгоград Дата регистрации: 28.06.2015 |
какие типы в курсоре создадим - такие и будет аппендить ... собсно так же как и из текстовика. Но мне зачастую удобнее даже не в текстовые поля гнать, а когда знаю что в поле должна быть дата или число - такой курсор и создавать, сразу принимаем нужный формат. Но тут конечно зависит от вида/чистоты данных, иногда лучше принимать в текстовом и уже у себя разбирать. Исправлено 2 раз(а). Последнее : AndyNigmatec, 10.01.25 17:36 ![]() |
Re: XLS(x) -> DBF | |
---|---|
Равиль Сообщений: 6692 Откуда: Уфа Дата регистрации: 01.08.2003 |
Да, мне понравилось ! Спасибо !
шустро работает ! 370 тыс записей за 10 сек загружаются ! Надо все переписать ... Из-за этого и тему создал - более быстрые способы найти )) ------------------ Тяжело согнать курсором муху с монитора ... ![]() |
Re: XLS(x) -> DBF | |
---|---|
sphinx Сообщений: 31893 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Цитата: Андрей, я и не буду спорить. Евгения знаю с Девконов, он и Скпилев я охреневал, каки что ваяли парни. У него были процедуры, которые, к примеру, определяют, каким почтовым сервером везти. Код на сайте, найти можно, да и Женьк поделится еще раз, уверен. И есть подозрение, перетекающее в уверенность, что с отчетами у него автомат полный, и опять от системы выода нихрена не зависит. Я использовал почти 15 лет назад одну систему, ей похрен на автоматизацию через COM. Разумеется в ознакомительных целях. ![]() ------------------ "Veni, vidi, vici!"(с) ![]() |
Re: XLS(x) -> DBF | |
---|---|
of63 Автор Сообщений: 26001 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Если бы все Excel-файлы были одного формата - то работа бы упростилась
Я напрягся, и интерпретировал колонки в листе файл эксел (зная, что в них, и более и равной чем в одной) информации, что это дата, ИНН, СНИЛС, сумма, процент... Трудоемкая задача... Это "ИИ" ) Доб. Код не буду показывать - много строк и подпрограмм, но понимает колонки (и отличает заголовки, находит конец данных, прощает прогалы в колонках). Крайне удобгная штука. Главное - знать что искать. ЗВ моем случае помогло, что я ищу заведомо известнные типы данных, например ИНН, МНИЛС - они структурированы... Исправлено 1 раз(а). Последнее : of63, 13.01.25 23:07 ![]() |
Re: XLS(x) -> DBF | |
---|---|
glaz58 Сообщений: 821 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Можно через Libre Office. XLSX открыть с помощью Libre Office Calc, а потом сохранить как dbf.
![]() |
Re: XLS(x) -> DBF | |
---|---|
of63 Автор Сообщений: 26001 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Какие будут имена колонок и типы данных (и как быть с многострочными 'memo-данными) ?
Адекватнее всего, когда какая-то "машина" выгрузила ДБФ колонками под именами "A","B"... с ними внимательно надо обращаться ввиду имен таких, но юзабельно в фоксе, он позволяет при соблюдении его фишек! ![]() |
© 2000-2025 Fox Club  |