Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Копирование данных из одного xls-файла в другой


KSergey ©   (15.08.17 12:07

Есть одна программа_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]

скрипты рулят.
рулят и разруливают.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо