Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi - DBGrid

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp

Код:
 
Procedure SendtoExcel(ShFile: String; Querys: TQuery);
Var
   ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: Variant;
   BeginCol, BeginRow, j: integer;
   RowCount, ColCount: Integer;
Begin
   BeginCol := 1;
   BeginRow := 3;
 
   RowCount := Querys.RecordCount;
   ColCount := Querys.FieldDefs.Count;
 
   ExcelApp := CreateOleObject('Excel.Application');
   ExcelApp.Application.EnableEvents := false;
 
   Workbook := ExcelApp.WorkBooks.Add(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[BeginRow + RowCount - 1,
    BeginCol + ColCount - 1];
   Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
   Range.Value := ArrayData;
   ExcelApp.Visible := True;
End;
 

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 22:57 10-05-2006
fixer84



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vovanzp
Переписал процедуру, без memo и буфера обмена.  
 

Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,index: Integer;
ExcelApp,sheet: Variant;
 
begin
 ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.Visible := true;
 ExcelApp.WorkBooks.Add(-4167);
 ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Тест';
 sheet:=ExcelApp.WorkBooks[1].WorkSheets['Тест'];
 index:=3; //c какой строки вставлять в excel'e
 DBGrid1.DataSource.DataSet.First;
  for i:=1 to  DBGrid1.DataSource.DataSet.RecordCount do
      begin
   for j:=1 to DBGrid1.FieldCount do
   sheet.cells[index,j]:=DBGrid1.fields[j-1].asstring;
   inc(index);
   DBGrid1.DataSource.DataSet.Next;
      end;
end;
 


Всего записей: 214 | Зарегистр. 30-07-2005 | Отправлено: 08:19 11-05-2006 | Исправлено: fixer84, 08:22 11-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
fixer84
 
При попытке скомпилировать, вылетает ошибка:
[Error] Unit1.pas(47): '[' expected but '.' found
 
 
 
Добавлено:
DroN_S
 
а что передается в качестве второго параметра процедуре?

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 13:50 11-05-2006
dyr farot

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну и привел бы эту строку...
потому как тут совершенно не понятно какая из них 47-я

Всего записей: 697 | Зарегистр. 03-08-2004 | Отправлено: 14:03 11-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dyr farot
 
sheet.cells:=DBGrid1.fields.AsString;

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 14:04 11-05-2006
fixer84



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vovanzp
Ты хотя бы код правильно скопировал, что ли.
Потому что нет такой строчки
Цитата:
sheet.cells:=DBGrid1.fields.AsString;

Кстати, в раздел uses не забыл ComObj добавить?
Код, который я привел выше, 100% рабочий.
 
 

Всего записей: 214 | Зарегистр. 30-07-2005 | Отправлено: 16:18 11-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp

Цитата:
а что передается в качестве второго параметра процедуре?

в первой строке указывается путь для файла, во-второй строке указывается что импортировать в Excel....
то бишь

Код:
 
SendtoExcel('c:\Sample.xls',DM.TQuery);
 

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 19:10 11-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DroN_S
теперь понял. спасибо.
 
Такой вопрос: как возможно ли сделать экспорт из DBGrid в готовый шаблон (Excel файл)?
 
 

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 19:49 11-05-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
а чем тебя вышеприведённый пример не устраивает?

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 20:51 11-05-2006
vovanzp



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DroN_S
дело в том, что мне необходимо сделать шапку в документе. поэтому я хотел сделать шаблон, и просто потом туда все экспортировать

Всего записей: 64 | Зарегистр. 29-04-2006 | Отправлено: 20:59 11-05-2006
GUNski



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Экспорт в Эксель через MS OLE Automation - ищи по нему инфу, все очччень просто делается

Всего записей: 33 | Зарегистр. 25-01-2006 | Отправлено: 20:56 25-07-2006
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vovanzp
дык зачем, просто перед экспортом данных из Query перердаёшь в Excel нужный текст с нужными настройками, а потом уже делаешь экспорт...
p.s. научись пользоваться макросами и многие вопросы у тебя просто отпадут сразу!!!

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 14:34 26-07-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Может кто знает, где можно почитать про экспорт данных из DBgrid'a в Excel или в Word, если возможно  

Вот простой способ:
 
uses
  cxExportGrid4Link;
   ...
if SaveDialog1.Execute then
    try
      FrmExportParam.ShowModal;
      if IsSaveNeed=false then exit;
      Screen.Cursor:=crHourGlass;
      ExportGrid4ToExcel(SaveDialog1.FileName, cxGrid1, FrmExportParam.ExpandCheckBox.Checked, not FrmExportParam.SelectCheckBox.Checked, FrmExportParam.FormatCheckBox.Checked);
    except
      Screen.Cursor:=crDefault;
      showmessage('Ошибка при сохранении файла!');
    end;
  Screen.Cursor:=crDefault;
 
 
там множество форматов куда экспортировать, посмотри cxExportGrid4Link - родное DevExpress средство

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 17:22 26-07-2006
ogokin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Может кто знает  как подкрасить в DBGridEh1 одну ячейку в компоненте Ehlib?
Заранее спасибо!

Всего записей: 1 | Зарегистр. 26-07-2006 | Отправлено: 17:42 26-07-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi - DBGrid


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru