Страница 1 из 1

Опции листа при создании отчета в Excel

Добавлено: 06 май 2005, 11:18
Аля
Добрый день.
Есть такая задача - выводить отчет в Excel, причем так чтобы данные располагались на разных листах (их количество меняется в зависимости от данных) и каждый лист был подписан в соответствии с данными.
Главный вопрос - как быть с листами...
Может есть специальные функции? Или надо использовать что-то типа function OleCreate? Как потом указать опции листа?
Заранее спасибо!

Добавлено: 06 май 2005, 11:37
edward_K
if i>k
{ for(j:=k+1;j<=i;j:=j+1)
if not xlAddSheet then exit;
}
for(j:=k;j>i;j:=j-1)
xlDeleteSheet(j) ;
xlSetSheetName(exlist, w)
- Excel.doc

Добавлено: 06 май 2005, 12:18
Maverick
но то что описал Эдуард относится только к созданию отчетаов с помощью OLE-ф-ий excellib.dll, к SLK это неприменимо.

Добавлено: 06 май 2005, 12:33
edward_K
в теории можно побороть и slk - тока уж лучше в Excel сразу вывести как хочется , в том числе и присоединенкой.
так делаем шаблон в excel , с макросом запускающимся при открытии Excel, подкладываем его в Startup Excel. В сием макросе анализируем открытие книги и в зависимости от имени делаем то или иное - делал так лет 5 назад. Но проще и лучше уж сразу гнать в Excel.

Добавлено: 06 май 2005, 12:44
Maverick
имелись ввиду возможности галки )))
то, о чем говоришь ты - это уже использование самого Ёкселя для саопрограмминга )))

Добавлено: 06 май 2005, 12:51
Аля
Спасибо!!! Принцип понятен :)
А не могли бы Вы выслать данную документацию - Excel.doc
Потому что вопросы то скорее всего еще возникнут... :)
00000011@mail.ru

Добавлено: 06 май 2005, 17:17
Аля
Возник еще вопрос.
Есть определенный формат листа (ширина столбцов, заголовки)
Можно этот формат как-то скопировать?
Если использовать xlcopytobuff а потом вставлять
то ширина столбцов не копируется.
может можно создать лист на основе другого листа?
или подскажите функцию (с описанием параметров) которая позволяет настраивать ширину столбцов.

Добавлено: 06 май 2005, 18:18
m0p3e
xlSetColumnWidth
Function xlSetColumnWidth(Size : word; RawU : longint; ColL : longint; RawD : longint; ColR : longint) : boolean;
Установить в заданном диапазоне активного листа ширину колонок в значение Size
Возвращает результат операции.
RawU : longint; ColL : longint; RawD : longint; ColR : longint
координаты диапазона
Size : word
ширина колонок

Добавлено: 11 май 2005, 17:30
Аля
Всем помогавшим большое спасибо!
Отчет получился, выводится быстро и все как надо.
Но есть одно НО:
Создаю из шаблона, там есть Лист1 с заданным форматированием.
На его основе создаю другие листы.
Затем в конце
xlDeleteSheetbyname('Лист1');
Но лист не удаляется! :(
С чем это может быть связано?

Добавлено: 11 май 2005, 17:55
Maverick
Попробуй сделать этот лист активным, а потом удалить активный лист - должно с работать. тоже сталкивался с заморочками по имени листа - плюнул и пошел по пути работы с активными листами

Добавлено: 12 май 2005, 08:48
Аля
[quote="Maverick"]Попробуй сделать этот лист активным, а потом удалить активный лист - должно с работать. тоже сталкивался с заморочками по имени листа - плюнул и пошел по пути работы с активными листами[/quote]
Я уже перебробовала по всякому :(
Подскажите как именно у Вас работает?
xlGetSheetsCount(cnt); // нужный лист последний
if xlDeleteSheet(cnt) then message('good');
if xlDeleteSheetbyname('Лист1') then message('good')
else message('bad');
if xlDeleteSheetbyname('Лист1') then message('good')
else message('bad');
Причем good он выдает все 3 раза...!
А лист все равно не удален оказывается :(