|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Выгрузка определенного поля
Люди скажите как зделать чтоб выгружалось в Excel только выделенная строка DBGrid
Код:
var xl:Variant; bm: TBookmark; col, row,i: Integer; sline: string; mem:TMemo; Size: cardinal; PRes: PChar; BRes: boolean; ExcelApp,Workbook,Colum,Sheet: OLEVariant; TemplateFile,cn,un:String; begin // подрубаем кнопку каторая включает невидимые колонки таблици Button4.Click; // создаем масив Size := MAX_COMPUTERNAME_LENGTH + 1; PRes := StrAlloc(Size); if BRes then cn:= StrPas(PRes); Size := MAX_COMPUTERNAME_LENGTH + 1; PRes := StrAlloc(Size); if BRes then un := StrPas(PRes); Screen.Cursor := crArrow; DBGrid1.DataSource.DataSet.DisableControls; bm := DBGrid1.DataSource.DataSet.GetBookmark; DBGrid1.DataSource.DataSet.First; i:=1; // создаём объект Excel begin ExcelApp:=CreateOleObject('Excel.Application'); ExcelApp.Application.EnableEvents:=false; ExcelApp.WorkBooks.Add; ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Отчёт'; ExcelApp.Visible := false; Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Columns; for col := 0 to DBGrid1.FieldCount-1 do if DBGrid1.Columns[col].Visible then begin Colum.Columns[i].ColumnWidth:=20;Inc(i); end; Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Rows; Colum.Rows[2].Font.Bold:=true; Colum.Rows[2].Font.Size:=12; Colum.Rows[1].Font.Bold:=true; Colum.Rows[1].Font.Color:=0; Colum.Rows[1].Font.Size:=12; ExcelApp.Visible := false; begin mem := TMemo.Create(Self); mem.Visible := false; mem.Parent := Form1; mem.Clear; sline := ''; sline :=(#9'БД студентов на '+DateToStr(date)); mem.Lines.Add(sline); sline := ''; for col := 0 to DBGrid1.FieldCount-1 do if DBGrid1.Columns[col].Visible then sline := sline + DBGrid1.Columns[col].Title.Caption + #9; mem.Lines.Add(sline); mem.Lines.Add(''); for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do begin sline := ''; for col := 0 to DBGrid1.FieldCount-1 do if DBGrid1.Columns[col].Visible then sline := sline + DBGrid1.Fields[col].AsString + #9; mem.Lines.Add(sline); DBGrid1.DataSource.DataSet.Next; if DBGrid1.DataSource.DataSet.Eof then Break; end; mem.SelectAll; mem.CopyToClipboard; begin ExcelApp.Visible := true; ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Paste; end; DBGrid1.DataSource.DataSet.GotoBookmark(bm); DBGrid1.DataSource.DataSet.FreeBookmark(bm); DBGrid1.DataSource.DataSet.EnableControls; Screen.Cursor := crArrow; Button5.Click; end; end; end; а мне нужно только выделеную строку что исправить??? |
#2
|
|||
|
|||
примерно так.... дальше я думаю ты додумаешься
если строка выделенная то...
Код:
if (DBGrid1.SelectedRows.CurrentRowSelected = True) then... |
#3
|
||||
|
||||
Gribok, всё так же как в твоём коде только:
1. ты НЕ переходишь на первую строку 2. после выгрузки текущей строки ты НЕ переходишь на следующую строку вобщем делаешь выгрузку одной строки без цыкла Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|