![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
тонкости работы с excel
Arinyshka © (2008-08-05 19:28:00)подскажите, можно ли из кода программы организовать стандартную группировку данных при экспорте в excel?
Уточню: я скидываю в Excel данные из вирт. таблицы (заполнена запросом из БД, не суть важно). Первая колонка будет Подгруппа товара, данные в ней повторяются для многих из второй колонки Товар. Нужна автоматическая группировка по первой колонке... Данные отсортированы еще хранимой.
Можно ли это сделать напрямую в коде? спасибо
arinyshka (2008-08-06 12:00:00) [21]Не получается...
procedure ExcelFillData(ADataSet: TDataset);
var
Range, Cell1, Cell2, ArrayData : Variant;
BeginCol, BeginRow, i, j : integer;
begin
/// заполняю вирт таблицу
BeginCol:=3;
BeginRow:=9;
RowCount:=ADataSet.RecordCount;
oleExcelDocument.Worksheets.Item[1].Activate;
oleExcelDocument.Application.EnableEvents := false;
ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
for I := 1 to RowCount-1 do
begin
for J := 1 to ColCount-1 do
ArrayData[I, J] :=ADataSet.Fields[j].AsString;
ADataSet.Next;
end;
//// скидываю ее в excel
Cell1 := oleExcelDocument.WorkSheets[1].Cells[BeginRow, BeginCol];
Cell2 := oleExcelDocument.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol +ColCount - 1];
Range := oleExcelDocument.WorkSheets[1].Range[Cell1, Cell2];
Range.Value := ArrayData;
/// пытаюсь определить столбец, который хочу групировать
Cell2 := oleExcelDocument.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol];
Range := oleExcelDocument.WorkSheets[1].Range[Cell1, Cell2];
oleExcelDocument.WorkSheets[1].Range.Select;
oleExcelDocument.WorkSheets[1].Selection.Rows.Group ;
oleExcelDocument.Visible := true;
end;
Уходит в рантайме с ошибкой "Неверно определено число параметров".
И еще - после закрытия excel он остается висеть в процессах... В приложениях - нет, в списке процессов - есть. Как убить?
Palladin (2008-08-05 20:19:00) [22]конечно можно, записать макрос и воспроизвести