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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Аля
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

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

Сообщение Аля »

Добрый день.
Есть такая задача - выводить отчет в Excel, причем так чтобы данные располагались на разных листах (их количество меняется в зависимости от данных) и каждый лист был подписан в соответствии с данными.
Главный вопрос - как быть с листами...
Может есть специальные функции? Или надо использовать что-то типа function OleCreate? Как потом указать опции листа?
Заранее спасибо!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение 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
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

но то что описал Эдуард относится только к созданию отчетаов с помощью OLE-ф-ий excellib.dll, к SLK это неприменимо.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

в теории можно побороть и slk - тока уж лучше в Excel сразу вывести как хочется , в том числе и присоединенкой.
так делаем шаблон в excel , с макросом запускающимся при открытии Excel, подкладываем его в Startup Excel. В сием макросе анализируем открытие книги и в зависимости от имени делаем то или иное - делал так лет 5 назад. Но проще и лучше уж сразу гнать в Excel.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

имелись ввиду возможности галки )))
то, о чем говоришь ты - это уже использование самого Ёкселя для саопрограмминга )))
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Аля
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

Сообщение Аля »

Спасибо!!! Принцип понятен :)
А не могли бы Вы выслать данную документацию - Excel.doc
Потому что вопросы то скорее всего еще возникнут... :)
00000011@mail.ru
Аля
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

Сообщение Аля »

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

Сообщение 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
ширина колонок
Аля
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

Сообщение Аля »

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

Сообщение Maverick »

Попробуй сделать этот лист активным, а потом удалить активный лист - должно с работать. тоже сталкивался с заморочками по имени листа - плюнул и пошел по пути работы с активными листами
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Аля
Посетитель
Сообщения: 36
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Тюмень

Сообщение Аля »

[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 раза...!
А лист все равно не удален оказывается :(
Ответить