Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сохранить БД через SaveDialog в формате Word и Excel?


ev ©   (2004-04-09 14:18:00) 

Как сохранить БД через SaveDialog в формате Word и Excel?


Карелин Артем   (2004-04-09 14:40:00) [1]

Fay ©   (09.04.04 14:30) [9]
Такой вот я.

ev ©
Чтобы не быть жлобом, пишу свой код экспорта. Сохранить думаю найдешь как самостоятельно.
var Excel,WorkBook,Sheet,Area:variant;
   i:integer;
begin
try
 Excel := CreateOleObject('Excel.Application');
 if Excel.WorkBooks.count=0 then WorkBook := Excel.WorkBooks.Add else WorkBook := Excel.WorkBooks[1];
 if WorkBook.WorkSheets.count=0 then Sheet := WorkBook.WorkSheets.Add else Sheet := WorkBook.WorkSheets[1];
except
 ShowMessage('Невозможно запустить MS Excel');
 exit;
end;
i:=MainData.Grid2ExcelEx(Sheet,3,1,DBGridEh1,True);
Sheet.Cells.Columns.AutoFit;
Sheet.Cells[i+1,1].Value:='Всего';
Sheet.Cells[i+1,3].FormulaR1C1:='=SUM(R[-'+IntToStr(i-3)+']C:R[-1]C)';
Area:=Sheet.UsedRange;
Sheet.Cells[1,1].Value:=MainData.GetTitle1('');
Sheet.Cells[2,1].Value:=MainData.Get1DateTitle(Self.Caption,Now);
(DateEdit1.Date);
Area.Borders.LineStyle :=1;
Area.BorderAround(1,3);
Area.HorizontalAlignment:=-4131;
Sheet.UsedRange.NumberFormat:='@';
Excel.Visible:=true;
Excel.ScreenUpdating:=true;
Sheet:=Unassigned;
WorkBook:=Unassigned;
Excel:=Unassigned;

*****
function TMainData.Grid2Excel(const ExcelDoc: variant; const row,
 col: integer;const Grid: TDBGridEh):integer;
var x,y:integer;
   bm:TBookmark;
   BeginCol, BeginRow, i, j : integer;
   RowCount, ColCount : integer;
   Cell1, Cell2,ArrayData:Variant;
begin
// if Grid.DataSource.DataSet.IsEmpty then exit;
Screen.Cursor:=crHourGlass;
Application.ProcessMessages;
y:=row;
Grid.DataSource.DataSet.DisableControls;
bm:=Grid.DataSource.DataSet.GetBookmark;
Grid.DataSource.DataSet.First;
for x:=0 to Grid.Columns.Count-1 do
 begin
  ExcelDoc.Cells[y,x+col].Value:=Grid.Columns[x].Title.Caption;
  ExcelDoc.Cells[y,x+col].Font.Bold:=true;
 end;
Grid.DataSource.DataSet.Last;
Grid.DataSource.DataSet.First;
RowCount:=Grid.DataSource.DataSet.RecordCount;
// if RowCount>16000 then RowCount:=16000;
ColCount:=Grid.Columns.Count;
ArrayData := VarArrayCreate([1, RowCount+1, 1, ColCount], varVariant);
i:=1;
while not(Grid.DataSource.DataSet.Eof or (Grid.DataSource.DataSet.RecNo>65000)) do
 begin
  for J := 1 to ColCount do
   begin
    //    if not(Grid.Columns[j-1].Field.IsNull) then
    ArrayData[I, J] := Grid.Columns[j-1].Field.Text;
   end;
  inc(i);
  RowCount:=i;
  Grid.DataSource.DataSet.Next;
 end;
Cell1 := ExcelDoc.Cells[Row+1, Col];
 // Правая нижняя ячейка области, в которую будем выводить данные
Cell2 := ExcelDoc.Cells[Row  + RowCount-1, Col +ColCount - 1];
ExcelDoc.Range[Cell1, Cell2].NumberFormat:='0';
ExcelDoc.Range[Cell1, Cell2].Value := ArrayData;
Grid.DataSource.DataSet.GotoBookmark(bm);
Grid.DataSource.DataSet.FreeBookmark(bm);
Grid.DataSource.DataSet.EnableControls;
// ExcelDoc.UsedRange.NumberFormat:='@';
Screen.Cursor:=crDefault;
Result:=RowCount-1;
if Result<1 then Result:=1;
end;


Fay   (2004-04-09 14:30:00) [2]

2Карелин Артем ©
8)


Карелин Артем   (2004-04-09 14:29:00) [3]

http://go.mail.ru/?qs=1&lfilter=yes&words=Delphi+Excel+%FD%EA%F1%EF%EE%F0%F2&change=2


Fay   (2004-04-09 14:29:00) [4]

Я тебе свой модуль для Ёxcel-я закинул. Для Word-а под рукой нету.


bushmen   (2004-04-09 14:27:00) [5]

Создаешь OLEObject, который привязан к Excel или Word и, например, в цикле кидаешь туда значения.


ev   (2004-04-09 14:27:00) [6]

А можно ссылку?


Карелин Артем   (2004-04-09 14:26:00) [7]

Ну как. На тему экспорта полно статей написано. Экспортируешь и вызываешь методу SaveAs. А можешь на Torry поискать компонентры для экспорта.


ev   (2004-04-09 14:24:00) [8]

Сохранить выборку по SQL запросу.


Fay   (2004-04-09 14:20:00) [9]

В общем случае - никак. Уточни вопрос.


bushmen   (2004-04-09 14:20:00) [10]

Что значит "Сохранить БД" ? Сохранить выборку данных из БД или структуру?


Наверх

Титульная страница Поиск, карта сайта Написать письмо