00:22

Моё сознанье несется ракетой в сторону солнца!!!
Добрый вечер!

Есть задачка, не знаю с какой стороны подступиться.
Есть Excel-файл с заданной структурой и каким-то набором данных, лежит в заданной папке, но данные в этом Excel-е могут меняться.
Нужно сделать файл Word, который при открытии будет подтягивать поля из того Excel-файла и подставлять их в определенное место Word-файла.
Как это сделать? С чего начать? Какой формат должен быть у файла: doc, dot или что-то еще... Как подключиться к Excel-ю? Как настроить маппинг полей?

Буду очень благодарна за объяснение или какую-нибудь ссылку с похожим алгоритмом.

Комментарии
26.02.2014 в 00:42

бинарный романтик
answers.microsoft.com/ru-ru/office/forum/office...

Аж на первой странице гугля по запросу автоматический перевод данных из excel в word
26.02.2014 в 01:15

Моё сознанье несется ракетой в сторону солнца!!!
Dark Dragon, вы имеете в виду специальную вставку?
мне это не подойдет, т.к. количество строк в Excel не постоянно, может быть 1, может быть 50
Нужно делать слияние, а я не понимаю как, ни разу этого не делала...
26.02.2014 в 01:50

We rise up for the things we believe in over and over again
SmiLena, вам не слияние нужно, и не специальная вставка. Вам нужно воспользоваться вставкой объекта. Применительно к Word 2010:
Главная лента Word, пункт Вставка, на этой ленте ищем кнопку "Объект". В диалоговом окне выбираем вкладку "Создание из файла". Выбираем ту книгу Excel, из которой будут подтягиваться данные и ставим галку "Связь с файлом". Результат - все ячейки рабочей книги Excel стянуты в файл Word, когда исходная рабочая книга будет изменена, в документе Word нужно нажать на получившемся объекте правой кнопкой и выбрать там "Обновить связь". При повторном открытии документа Word программа сама спросит, обновлять ей данные из связанного файла или нет.
26.02.2014 в 02:21

Моё сознанье несется ракетой в сторону солнца!!!
Hikedaya, спасибо. но он же просто зашарашит таблицу из Excel как есть, а нужно чтобы в разные места макета подставлялись значения ячеек.
грубо говоря я создаю бланк, а из Excel нужно его заполнять. Сколько строк в Excel - столько заполненных бланков и страниц в Word-файле.
26.02.2014 в 02:31

We rise up for the things we believe in over and over again
SmiLena, тогда я должен уточнить, о каком бланке речь идет? О какой-то форме внутри word-файла?
26.02.2014 в 03:38

We rise up for the things we believe in over and over again
SmiLena, похоже, что да, необходимо слияние. Немного запутанный процесс, но не самый сложный. Разберем на простом примере (для все того же Word 2010).
Есть xls-файл, в нем поля ФИО, Электропочта, ID. Ну и кучка данных в этих полях.
Есть docx-файл-рыба, в котором в определенных местах нужно вставить поля ФИО, Электропочта, ID.
Открыв нашу "рыбу" выбираем ленту инструментов "Рассылки". На этой ленте нажимаем кнопку "Начать слияние", и выбираем интересующий нас вариант. В вашем случае скорее всего это будет "Простой документ Word". Затем на той же ленте нажимаем "Выбрать получателей", после чего "Использовать существующий список". Нам предложать выбрать файл, в котором есть данные по получателям.
Далее - выбор листа, на котором расположены наши данные. Галку "Первая строка содержит заголовки столбцов" ставим исходя из имеющихся данных.
На этом импорт данных завершен. Теперь осталось раскидать их по документу, тут все просто. Становимся курсором в документе в том месте, где должны светиться ФИО человека, и нажимаем кнопку "Вставить поле слияния". Появится список ранее импортированных полей, выбираем нужное, в данном случае ФИО.
Затем повторяем процедуру вставки нужных полей, пока не раскидаем все.
Последним шагом будет просмотр всех получившихся экземпляров документа. На ленте "Рассылки" нажимаем кнопку "Просмотр результатов", а рядом при помощи кнопок-стрелок перемещаемся по экземплярам. Тут тонкость в том, что экземпляры - это не привычные нам страницы Word-файла, боковым слайдером их не пролистать.
Как-то так. Будут вопросы - задавайте :)
26.02.2014 в 13:24

Моё сознанье несется ракетой в сторону солнца!!!
Hikedaya, ура! спасибо большое!!! Теперь все понятно :)
26.02.2014 в 15:19

Моё сознанье несется ракетой в сторону солнца!!!
Hikedaya, вот еще вопрос: когда мы выбираем получателей (то есть файл Excel), где хранится адрес этого файла?
Ситуация такая. Excel-ник лежит на компе клиента в заданной директории, например тут: %LOCALAPPDATA%\Temp\1.xls
А Word загружается из виртуального каталога на сервере, при этом у клиента создается его локальная копия, которая обращается к Excel-нику на сервере, а нужно чтобы он брал данные c компа клиента (%LOCALAPPDATA%\Temp\1.xls).
То еще извращение конечно :) но нужно избежать ситуации, когда с Excel на сервере работает несколько людей одновременно.
26.02.2014 в 15:54

Моё сознанье несется ракетой в сторону солнца!!!
а хотя... ладно, вроде придумалось как это обойти :)
26.02.2014 в 18:50

We rise up for the things we believe in over and over again
SmiLena, а в чем проблема с работой нескольких людей в одном xls?
26.02.2014 в 19:22

Моё сознанье несется ракетой в сторону солнца!!!
Hikedaya, он лочится процессом, и в него ничего нельзя записать.
В этот Xls данные по запросу выгружаются, один выгрузил, открыл Doc, что-то с ним делает, а в это время другому выгрузка понадобилась, и сиди жди, пока первый закончит. Но все получилось решить локальными копиями Xls на клиенте.
26.02.2014 в 19:47

We rise up for the things we believe in over and over again
SmiLena, а общая рабочая книга разве делу помочь не может? К тому же куча копий файла на клиентах тащит за собой проблему обновления оных.
27.02.2014 в 14:24

Моё сознанье несется ракетой в сторону солнца!!!
Hikedaya, там задача не в том, чтобы актуальная копия была у всех.
excel это просто промежуточный контейнер для выгрузки данных. У нас web-клиент не умеет напрямую с word работать, вот и приходится изворачиваться :) по сути клиент на web-е хочет выгрузить в word свое обращение с форматированием, картинками и пр. вот и все)