Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 июн 2024, 08:07

Объединение нескольких файлов excel в один

Автор irris, 11 мар 2013, 22:12

0 Пользователей и 1 гость просматривают эту тему.

irris

Добрый день.Помогите пожалуйста.
Вообщем на входе есть несколько файлов excel,в частном случае их будет 2 (это сформированные отчеты и сохраненные в формате хls )


нужно средствами 1С (при помощи какой нибудь обработки скомпоновать всю информацию в этих фалах в один)
на выходе должен получиться 3-ий файл вот такого вида

листов в каждом файле всегда один.Соответственно и в третьем фале должно быть всё на одном листе как на скриншоте.

MuI_I_Ika

А не получится изначально сделать табличный документ в 1С, содержащий две таблицы?

irris

Нет. Т.к. в последствии этих отчетов будет больше и механизм должен быть универсальным.
Т.е. регламентом будет формироватья n-ое количество отчетов и будут сохранятся каждый в файлах excel. Потом так же по расписанию обработка будет собирать всю информацию из этих файлов в 1.

MuI_I_Ika

Значит нужно по ole пробегать все ячейки и копировать их в исходный документ.

irris

Сначала и хотел так сделать,но появилась проблема с форматом ячеек.Через OLE получается скопировать только информацию в ячейке,а стиль и формат ячейки при этом не переносится.Таблица в новом файле получается совсем не такой как в первоначальном.
Появилась мысль просто написать в excele макрос и с помощью обработки открывать экселевский файл и запускать этот макрос. А макрос при этом будет собирать информацию из всех файлов. Не очень хороший способ,но другого способа пока найти не могу.Чтобы всё идеально переносилось.

toxicoff

Цитата: irris от 12 мар 2013, 21:28
Сначала и хотел так сделать,но появилась проблема с форматом ячеек.Через OLE получается скопировать только информацию в ячейке,а стиль и формат ячейки при этом не переносится.Таблица в новом файле получается совсем не такой как в первоначальном.
Появилась мысль просто написать в excele макрос и с помощью обработки открывать экселевский файл и запускать этот макрос. А макрос при этом будет собирать информацию из всех файлов. Не очень хороший способ,но другого способа пока найти не могу.Чтобы всё идеально переносилось.
точно не скажу, но там есть метод не перебором, а целиковым помещением куска файла. попробуйте в этом направлении капать

irris

Цитата: toxicoff от 13 мар 2013, 01:13
Цитата: irris от 12 мар 2013, 21:28
Сначала и хотел так сделать,но появилась проблема с форматом ячеек.Через OLE получается скопировать только информацию в ячейке,а стиль и формат ячейки при этом не переносится.Таблица в новом файле получается совсем не такой как в первоначальном.
Появилась мысль просто написать в excele макрос и с помощью обработки открывать экселевский файл и запускать этот макрос. А макрос при этом будет собирать информацию из всех файлов. Не очень хороший способ,но другого способа пока найти не могу.Чтобы всё идеально переносилось.
точно не скажу, но там есть метод не перебором, а целиковым помещением куска файла. попробуйте в этом направлении капать
Вот.Тоже слышал об этом методе,но к сожалению никак не могу накопать его.

mixqn

Цитата: irris от 12 мар 2013, 17:58
Нет. Т.к. в последствии этих отчетов будет больше и механизм должен быть универсальным.
Т.е. регламентом будет формироватья n-ое количество отчетов и будут сохранятся каждый в файлах excel. Потом так же по расписанию обработка будет собирать всю информацию из этих файлов в 1.
Так все таки, что конкретно мешает собрать сначала все в 1 табличный документ? Это будет гораздо проще. В крайнем случае можно сохранять отчеты не в xls(xlsx), а в mxl, а потом уже финальный вариант перевести в xls.
Цитата: toxicoff от 13 мар 2013, 01:13точно не скажу, но там есть метод не перебором, а целиковым помещением куска файла. попробуйте в этом направлении капать
Это как раз таки не проблема. В свое время делали нечто подобное. Примерный алгоритм такой (по памяти, чуть позже постараюсь найти код – напишу подробнее): выделить заполненную область на листе (опять же, если память не изменяет – есть параметры в экселе, которые позволяют это сделать), далее выделенная область помещается в конец принимающего листа (конец листа так же есть в каком-то параметре). в общих чертах примерно так. чуть позже постараюсь детальнее описать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск