Конференция "Прочее" » Копирование данных из одного xls-файла в другой
 
  • KSergey © (15.08.17 12:07) [0]
    Есть одна программа_1. Она умеет экспортировать данные в excel, пусть это будет файл_1.xls. Формат файла изменять возможности нет. Т.е. это некий фиксированный набор колонок с фиксированными названиями.

    Есть другая программа_2, которая умеет импортировать данные из excel файла жёсткого формата (шаблона), пусть это будет файл_2.xls

    Требуется файл_1.xls сконвертировать в файл_2.xls

    Подскажите, какими технологиями это можно сделать минимумом затрат? или готовые программы может есть.
    Я умею только программку накидать чтобы через COM-объект подключиться к каждому файлу, скопировав ячейки как нужно.
    Ну или на VBA, правда не понятно в какой его файл встроить в этой схеме (наверное в файл-приёмник, т.е. в файл_2.xls, потому как файл_1 пишется всегда с нуля).

    Но может есть вариант проще, без самописных программ?
    Может вообще сам Excel умеет как-то так переносить данные?

    Считаем, что менять местами столбцы в файл_1 и файл_2 возможности нет.
  • rrrrrrr © (15.08.17 12:25) [1]
    вариантов примерно миллиард.
    и это только на самом екселе без ничего другого
  • rrrrrrr © (15.08.17 12:31) [2]
    Есть другая программа_2, которая умеет ....

    плохо что она не умеет самого главного.
    сама понимать в какой колонке какие данные засунуты.
  • KSergey © (15.08.17 12:33) [3]
    > rrrrrrr ©   (15.08.17 12:25) [1]
    > вариантов примерно миллиард.
    > и это только на самом екселе без ничего другого

    Быть может вас не затруднит назвать штуки четыре-пять методов?
  • rrrrrrr © (15.08.17 12:39) [4]
    ну к примеру ячейки одной книги могут содержать ссылки на ячейки другой книги.
    или к примеру вба второй книги может вынуть в себя данные первой (миллионом способов)
    или вынуть наружу
    или еще например книга эксель умеет быть базой данных через оледб.

    но в данном случае все это костыли.

    когда меня лично запарил зоопарк входящих экселей,
    то я нарисовал интеллектуальный импорт, которому все равно как там колонки расположены, сколько строк преамбулы до табличных данных и так далее.
    к тому же это применимо не только к экселю, а ко всему что имеет регулярную структуру (текст, дбф, xml и т.д.)

    но десять лет назад пришлось потратить целый  день. или два.
  • KSergey © (15.08.17 12:45) [5]
    > ну к примеру ячейки одной книги могут содержать ссылки на
    > ячейки другой книги.

    Со ссылками не понятно. Вариант хорош вроде, но я не знаю сумеет ли в таком варианте программа_2 заимпортировать в себя именно данные, а не формулы.

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

    Ну т.е. VBA, верно?
  • rrrrrrr © (15.08.17 12:50) [6]
    ну да, вба.

    в первом случае будут импортированы данные
  • KilkennyCat © (15.08.17 12:55) [7]

    > > или еще например книга эксель умеет быть базой данных
    > через  оледб.
    >
    > Ну т.е. VBA, верно?

    да любое знакомое-привычное, могущее оледб юзать.
    но я бы поставленную задачу реализовал бы скриптом vba в первой книге, и попробовал бы его заставить на любые внешние запросы как к книге_2 отдавать в виде книги_2.
    в этом случае не потребуется программы_3
  • KSergey © (15.08.17 12:56) [8]
    > rrrrrrr ©   (15.08.17 12:50) [6]
    > в первом случае будут импортированы данные

    А можно тогда поподробнее как вписать такие ссылки?
    Это был бы хороший вариант: фактически сформировать шаблон, у которой например 10 строк заполнено ссылками на другой файл_1, перезаписываем файл_1 - фактически меняем данные в файл_2 (который со ссылками)

    Это ведь так будет работать, верно?

    Надо попробовать. Правда есть у меня какое-то сомнение, признаться: файл_2 засасывается через web-сайт, неужели данные в него волшебно уедут??
  • rrrrrrr © (15.08.17 12:57) [9]
    для начала скрипт на вбС, который сделает из первой вторую книгу.
    затем AI импорт
  • rrrrrrr © (15.08.17 12:59) [10]
    файл_2 засасывается через web-сайт

    пусть на сайт заливается книга1, а в ответ сливается книга 2
  • rrrrrrr © (15.08.17 13:01) [11]
    Это был бы хороший вариант
    на самом деле не очень вариант.
    вторая книга при открытии будет рассказывать что вот сейчас она будет обновлять связи на внешние источники
  • KSergey © (15.08.17 13:04) [12]
    > rrrrrrr ©   (15.08.17 13:01) [11]
    > Это был бы хороший вариант
    > на самом деле не очень вариант.
    > вторая книга при открытии будет рассказывать что вот сейчас
    > она будет обновлять связи на внешние источники

    Ну т.е. не заработает верно?

    > rrrrrrr ©   (15.08.17 12:59) [10]
    > файл_2 засасывается через web-сайт
    >
    > пусть на сайт заливается книга1, а в ответ сливается книга 2

    Я, вероятно, неточно выразился.
    Прога_2 (которая импортирует данные) - это и есть сторонний вебсайт.
  • KilkennyCat © (15.08.17 13:06) [13]
    а если формат файла из последних, на хмл, то можно вообще на всё наплевать и конвертить как угодно
  • rrrrrrr © (15.08.17 13:09) [14]
    что-то я запутался.
    можно схему на пальцах?

    пока я понял, что есть локальный эксель1 и кто-то где-то хочет иметь эксель2
  • KSergey © (15.08.17 13:13) [15]
    > KilkennyCat ©   (15.08.17 13:06) [13]
    > а если формат файла из последних, на хмл, то можно вообще
    > на всё наплевать и конвертить как угодно

    Кстати да, тоже вариант.
    Правда вопрос тот же: каким софтом сделать конверсию? оно ж еще и зипованное
  • KSergey © (15.08.17 13:15) [16]
    > rrrrrrr ©   (15.08.17 13:09) [14]
    > что-то я запутался.
    > можно схему на пальцах?

    Есть прога_1. Сторонняя.
    Она умеет экспортировать в жёсткий формат файл_1.xls

    Есть вебсайт_2. Сторонний.
    Она умеет импортировать жёсткий формат файл_2.xls

    Вопрос: как преобразовать файл_1.xls в файл_2.xls с минимальными затратами, в идеале желательно без привлечения программирования, ну либо на чем-то попроще в плане времязтрат (в VBA мне разбираться надо будет, но решаемо, конечно)
  • rrrrrrr © (15.08.17 13:22) [17]
    .vbs скрипт

    открываем книгу 1
    вынимаем данные.
    делаем книгу 2
    делаем пост книги2 на сторонний сайт

    по мне писать vbs в FAR'е удобнее, чем колупать vba макросы в книге.
  • rrrrrrr © (15.08.17 13:32) [18]
    давай книжку первую.
    напишу.
    все равно пока заняться нечем
  • KSergey © (15.08.17 14:27) [19]
    > rrrrrrr ©   (15.08.17 13:32) [18]
    > давай книжку первую.
    > напишу.

    у вас e-mail верный указан на форуме?
    Если нет - напишите мне по e-mail, пожалуйста
  • rrrrrrr © (15.08.17 14:34) [20]
    ушло
  • tesseract © (16.08.17 21:52) [21]
    >>Подскажите, какими технологиями это можно сделать минимумом затрат?

    У excel форматов используемых 2 - BIFF, который мегастрый и XLSX который xml в пожатом зипе - для всех есть библиотеки для чтения и записи. Даже 1С, даже php, даже python умеет все это дело обрабатывать без COM.
  • Тимохов Дима © (19.08.17 02:26) [22]
    я бы руками написал на дельфи через ком.

    чтобы не тормозило чтение, читал бы сразу в вариантный массив нужный регион (тысячи ячеек).

    возможно и писать можно быстро через ком через регионы, не пробовал.

    но я обычно все быстро пишу на самописной либе, выводящей в BIFF8 (tesseract - правильно именно BIFF8, ибо остальные бифы - анахронизм).
  • rrrrrr © (19.08.17 09:08) [23]
    похоже все проходят такой период,
    когда на каждый случай типа сложить два плюс два
    появляется Project1.exe c Button1 на форме
    и через месяц никто не помнит что там внутри делается
  • Тимохов Дима © (19.08.17 21:54) [24]

    > rrrrrr ©   (19.08.17 09:08) [23]

    Ты, видно, самый опытный тут.
  • rrrrrr © (19.08.17 22:14) [25]
    не совсем понял, почему это из [23] следует,
    но что есть, то есть.
  • Тимохов Дима © (19.08.17 23:03) [26]

    > rrrrrr ©   (19.08.17 22:14) [25]
    > не совсем понял, почему это из [23] следует,
    > но что есть, то есть

    Ну я сделал такой вывод. Извини, если обидел :)

    По ТЗ топикстартера я бы сделал конкретное (можно сказать, туповатое) приложение. Возможно назвал бы его Project1 ;)
    За время обсуждения я бы и приложение написал, и справку к нему.
    По ходу эксплуатации станет ясно, что нужно дописать и как добавить гибкости. Я понимаю, что, возможно, уже все украдено до нас. Но я бы написал свое приложение на данный конкретный случай.
  • ухты © (20.08.17 09:53) [27]

    > По ТЗ топикстартера я бы сделал конкретное (можно сказать,
    >  туповатое) приложение. Возможно назвал бы его Project1
    так вроде как раз и не хотелось никаких екзе топикстартеру.
    согласен, что скрипт тут достаточно хорошее решение
  • KilkennyCat © (20.08.17 10:20) [28]

    > не хотелось никаких екзе топикстартеру.
    > согласен, что скрипт тут достаточно хорошее решение

    скрипт не так уж сильно отличается о екзе. более того, к скрипту может быть примонстрячена Button1, сам скрипт называться Project1 и через месяц никто не вспомнит, почему и зачем
  • rrrrrr © (20.08.17 11:11) [29]
    скрипт можно читать и смотреть что он делает.

    исходник exe конечно тоже можно читать и смотреть что он делает.
    правда он ничего не делает, а делает все exe который читать нельзя.
    зато можно гадать по этой ли версии исходников он был собран месяц назад, или это всего лишь промежуточная бета.

    да да, я помню, есть вершон инфо, документация, lts и прочие академичности.
  • ухты © (20.08.17 11:13) [30]
    в том то и дело что и не вспомнит и посмотреть некуда, потому что раз и не помнять то и сырцы потеряны, а скрипт и в африке скрипт ))
  • rrrrrr © (20.08.17 11:34) [31]
    чаще бывает так, что когда появляется первый релиз, то к исходникам спустя некоторое время возвращаются и делают там какой-нибудь улучшайзинг "на будущее", не обновляя рабочий exe.
  • KilkennyCat © (20.08.17 12:34) [32]
    вот ща хоть и не африке, но сижу и смотрю на чужие скрипты и запросы в акцессе...и грустно и тоскливо мне.
  • rrrrrr © (20.08.17 14:08) [33]
    скрипты рулят.
    рулят и разруливают.
 
Конференция "Прочее" » Копирование данных из одного xls-файла в другой
Есть новые Нет новых   [118243   +31][b:0][p:0.001]