Форум Программирование Проблема с выгрузкой в Excel |
|
[COLOR="Red"][B][U]СРОЧНО[/U][/B][/COLOR] нужна помощь!!! Для начало вкратце объясню суть задачи. Есть огромная dbf-таблица. Из нее необходимо выбрать данные по определенным критериям и сформировать отчет в Excel. Я делаю с помощью технологии ADO, вывожу в DBGrid саму таблицу. А вот отчет сделать не могу. Таблица должна состоять из нескольких строк, в каждой из которых содержится сумма всех элементов, обладающих сходными свойствами. Проблема состоит в том, что я не могу сформировать правильный SQL-запрос. Как в него добавить строки или что-то вроде того? Или... Есть еще идея. Можно выгружать в Excel по строке. Но есть одно "но". В процедуре выгрузки файл перезаписывается. Можно ли сделать так, чтобы сначала выгрузились все данные, а потом только он сохранился? Вот процедура выгрузки: [code] // Выгрузка в Excel procedure SendtoExcel(ShFile: string; Querys: TADOQuery; m,n:Integer); var ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: variant; BeginCol, BeginRow, j: integer; RowCount, ColCount: integer; begin // Задаем верхнюю левую ячейку BeginCol:=2; BeginRow:=4; // Задаем размеры области, в которую выводятся данные RowCount:=Querys.RecordCount+1; ColCount:=Querys.FieldDefs.Count; // Создание Excel ExcelApp:=CreateOleObject('Excel.Application'); // Отключение реакции Excel на события ExcelApp.Application.EnableEvents:=False; // Создание книги (Workbook) // Если заполняем шаблон, то Workbook:=ExcelApp.Workbooks.Add(ShFile); Workbook.SaveAs(ShFile); ArrayData:=VarArrayCreate([1, RowCount, 1, ColCount], varVariant); // Заполнение массива Querys.DisableControls; Querys.First; while not Querys.Eof do begin for j:=1 to Querys.FieldDefs.Count do begin ArrayData[Querys.RecNo, j]:= Querys.FieldbyName(Querys.FieldDefs.Items[j-1].DisplayName).Value; end; Querys.Next; end; Querys.EnableControls; // Левая верхняя ячейка Cell1:=Workbook.Worksheets[1].Cells[BeginRow, BeginCol]; // Правая нижняя ячейка Cell2:=Workbook.Worksheets[1].Cells[m, n]; // Область, в которую выводятся данные Range:=Workbook.Worksheets[1].Range[Cell1,Cell2]; // Вывод данных Range.Value:=ArrayData; // Делаем Excel видимым ExcelApp.Visible:=True; end; [/code] ПОМОГИТЕ плиз, а то на работе прибьют | ||||||
|
Этот форум никто не читает. Задай свой вопрос здесь. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
Перейти в раздел:
© 2004 - 2024, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.02 сек. |