![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Atreides |
![]()
Сообщение
#1
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Задача - разложить данные по предприятия в закладки книги файла эксель. Т.е. одна закладка одно предприятие. + имя закладки это имя предприятия из списка. Шапка одна и так же везде должна быть, количество предприятий может меняться. Для вывода отчет использую шаблон и компоненту EXLReport. В один список все прекрасно выходит, а вот как разбить на страницы с именами предприятий и данные разложить вопрос. Не уверен, что верно написал переход по списку предприятий еще...
Вот пример моего вывода: Код procedure TForm5.Button1Click(Sender: TObject); var col: integer; st: string; year, MonthSelected: string; oth: string; sum_03, sum_04, sum_05, sum_1_04, sum_2_04, sum_1_05, sum_2_05: string; provodka: string; data: string; direct: string; IDSOURCE, PR_MEST: string; priznak: string; NO_FAM: string; cods: string; KOD:string; koll:integer; begin // собираем данные year := Form5.Edit1.Text; MonthSelected := FloatToStr(Form5.ComboBox1.ItemIndex + 1); priznak := IntToStr(Form5.ComboBox3.ItemIndex + 1); oth := 'получе5ние отчетного месяца' + MonthSelected + ''; Form5.ClientDataSet1.close; Form5.ClientDataSet1.DataRequest(oth); Form5.ClientDataSet1.open; oth := Form5.ClientDataSet1.fieldbyname('id_otchm').asstring; IDSOURCE := 'выбор источника загрузки ''; Form5.ClientDataSet1.close; Form5.ClientDataSet1.DataRequest(IDSOURCE); Form5.ClientDataSet1.open; IDSOURCE := Form5.ClientDataSet1.fieldbyname('ID_SOURCE').asstring; PR_MEST := Form5.ClientDataSet1.FieldByName('Pr_MEST').AsString; NO_FAM := Form5.ClientDataSet1.FieldByName('NO_ONE_FAM').AsString; direct := 'reestor_bez_mesta.xls'; //получаем список кодов организации begin cods := 'выборка кодов организации ' + ' order by Kodorg asc '; Form5.ClientDataSet1.close; Form5.ClientDataSet1.DataRequest(cods); Form5.ClientDataSet1.open; koll:=Form5.ClientDataSet1.RecordCount; Kod := Form5.ClientDataSet1.FieldByName('KODORG').AsString; while Form5.ClientDataSet1.Eof do begin //по одной организации st := ' запрос данных о предприятии '; Form5.ClientDataSet2.close; Form5.ClientDataSet2.DataRequest(st); Form5.ClientDataSet2.open; { col := Form5.ClientDataSet2.RecordCount; begin if col = 0 then begin ShowMessage('Данные отсуствуют') end else } Form5.ClientDataSet1.Next; begin Form5.EXLReport1.TemplSheet:='Лист 3'; exlReport1.Template := 'H:\808.COM\Andreev\Справочники\Forms\' + direct; if Assigned(Form5.EXLReport1) then Form5.EXLReport1.Show; // открытие окошка эксель end; end; end; end; //end; Сообщение отредактировано: Atreides - 27.04.2011 13:07 -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата XLApp - это ExcelApplication или какой модуль надо подключить? Нет. ЭтоUses ..., ComObj; Цитата Закладки как имя предприятия принимаются, и в каком месте запрос открывать? Еще раз можно этот же вопрос задать, только в более понятной форме? Какой запрос? Запрос - в строке ClientDataSet1.Filter := 'Pr_MEST = ' + QuotedStr(Ls.Strings[i]);Если тебе нужно - задай там критерием фильтрации не только поле Pr_MEST, но и любую другую комбинацию условий по правилам SQL. Цитата Есть возможность использовать шапку и после эту шапку копировать на другие листы? Есть возможность новый лист добавлять из шаблона. Прямо с шапкой, в том формате, который тебе нужен:constВ комментариях описаны все изменения, которые надо внести... Код тестировался на Дельфи 2009 под Excel XP, но ничего страшного и при более новых версиях Офиса произойти не должно, ничем недокументированным я не пользуюсь, все описано в MSDN -> Microsoft.Office.Interop.Excel Namespace (ссылки пока добавлять не могу, так что ищи сам) |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 0:46 |