В сообщении от Четверг, 28-Июл-2005 08:40 Денис написал(a): > Имеется несколько тысяч файлов формата *.xls Это не страшно, это даже хорошо, это лучше чем тысячи таблиц на бумаге. > У всех название вида (Waranty xxxx..xls) и находятся в одной папке. Нужно уточнение - файловая стуктура уже установлена раз и навсегда и менятся не должна? И файлы обязательно xls, и каталог жестко задан? И имя листа "Дефект1" всегда одно и то же? И номер строки (в примере - 11) задан жестко? > В сводной таблице надо получить данные из каждого файла. > Формула в ячейке получается вот такого вида::: > > ='file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty > 1028..xls'#$Дефект1.E11&'file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty > 1028..xls'#$Дефект1.F11&'file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty > 1028..xls'#$Дефект1.G11&'file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty > 1028..xls'#$Дефект1.H11&'file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty > 1028..xls'#$Дефект1.I11&'file:///D:/Dmitry_Gopka/Waranty from > 1000/Waranty 1028..xls'#$Дефект1.J11&'file:///D:/Dmitry_Gopka/Waranty > from 1000/Waranty 1028..xls'#$Дефект1.K11 То есть просто сцепить результаты? Не суммировать, а отобразить текст из нескольких ячеек исходной таблицы в виде одной строки? Тогда это действительно не совсем "сводная" таблица... > > Как можно автоматом( какой синтаксис) и если можно, то поподробнее > объясните, как в столбце в следующей ячейке увеличивать номер файла ( в > данном примере - 1028) на 1. или брать число из соседнего столбца. Эта задача имеет (ИМХО!) как минимум два решения - быстрое и правильное. Быстрое: привязать номер СТОЛБЦА результирующей таблицы к номеру файла. Для этого решения, на отдельном листе в одну из клеток записал текст 'file:///D:/Dmitry_Gopka/Waranty from 1000/Waranty и присвоил клетке имя AddFile. В другой клетке записал число 1027 и назвал ее Ofc. В третью записал "хвост" формулы без адреса конкретной клетки - ..xls'#$Дефект1. Ей дал имя Ext. Теперь вся первоначальная конструкция (привожу только начало) превращается в: =INDIRECT(CONCATENATE(AddFile;COLUMN()+Ofc;Ext;"E11")) & INDIRECT(CONCATENATE(AddFile;COLUMN()+Ofc;Ext;"F11"... И т.д. Еще облегчить жизнь ООо можно, если вынести часть =CONCATENATE(AddFile;COLUMN()+Ofc;Ext) в, скажем, первую строку, а в INDIRECT указывать только адрес ячейки: =INDIRECT(CONCATENATE(A$1;"E11")) & INDIRECT(CONCATENATE(A$1;"F11"))... Служебную строку с полным именем файла и листа можно скрыть, чтобы глаза не мозолила. Дальнейшие улучшения лежат в использовании OFFSET и других адресных функций, в привязке формулы к номеру строки результирующей таблицы и т.д. В конце концов можно будет добится того, что ВО ВСЕЙ таблице будет одна и та же формула, вычисляющая по заголовкам строк и столбцов (даже не по их именам, а по текстам надписей) реальные значения из внешних файлов. > А если есть возможность проделать это в ООBase напрямую и перекидывать > данные в MySql- буду вообще безмерно счастлив. О! А вот это уже - правильное решение. Макрос, который затолкает данные из таблиц (перебрав их все) в MySQL пишется и отлаживается около суток, если постоянно подглядывать в http://www.pitonyak.org/AndrewMacro.sxw (разделы 6.3.1.Reference a cell in another document, 6.11.Database range и 9.Database) Зато потом за час работы макрос затолкает данные в базу и работать с ними будет легко и приятно... Есть правда еще и ряд промежуточных решений - не самых быстрых и не очень мудреных. Например, записать всю пачку формул ДЛЯ ОДНОЙ внешней книги (номер книги указать в отдельной ячейке, чтобы менять удобно было) и когда данные отобразятся выделить (ctrl+* на NumPad) и перетащить или копи-пастом перенести в текстовый документ, который потом влить в БД через insert into... -- Всего доброго! Владислав Орлов aka JohnSUN
_____________________________________________________ Oo-discuss mailing list Oo-discuss at openoffice.ru https://lists.openoffice.ru/mailman/listinfo/oo-discuss
