Страница 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
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 раза...! 
А лист все равно не удален оказывается 
