Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизОтчеты Найти похожие ветки
← →
Чуча (2006-12-20 19:15) [0]Хелп, плиииз! Помогите, подалуйста, сделать отчет, формируемый на этапе выполнения, то есть в Word. Хотя бы просто вывести данные таблицы в Word.
← →
rar © (2006-12-20 19:25) [1]Если из dbGrid то я делаю след. образом
unit UnitExport;
interface
Uses
Windows, Messages, DB, Forms, Controls, DBGrids, StdCtrls, COMObj, ExcelXP,
Word97, SysUtils, ClipBrd;
procedure ExportDBGrid(toApp: integer; MainDBGrid:TDBGrid; MainForm:TForm );
implementation
uses UnitMain;
procedure LanguageKeyboard();//Ïåðåêëþ÷àåì êëàâèàòóðó â Êèðèëèöó
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,"00000419"),KLF_ACTIVATE)
end;
procedure CreateExcel();//Ïðîöåäóðà ýêñïîðòèðóåò DBGrid â Excel
var
ExcelApp: Variant;
begin
try
ExcelApp := GetActiveOleObject("Excel.Application");
except
try
ExcelApp := CreateOleObject("Excel.Application");
except
Exception.Create("Íå ìîãó çàïóñòèòü Excel");
end;
end;
ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
ExcelApp.Cells.Select;//âûäåëèëè âñå Ctrl+A
ExcelApp.Selection.NumberFormat:="@";//Óñòàíîâèëè ôîðìàò ÿ÷ååê òåêñòâûé
ExcelApp.Range["A1"].Select;//ïåðåøëè â ïåðâóþ ÿ÷åéêó
ExcelApp.ActiveSheet.Paste;//Âñòàâèëè äàííûå èç Clil
ExcelApp.Visible := true;//Ñäåëàëè âèäèìûì ïðèëîæåíèå
ExcelApp.WindowState:=xlNormal;
end;
procedure CreateWord(Col:integer);//Ïðîöåäóðà ýêñïîðòèðóåò DBGrid â Word
var
AppWord:variant;
begin
try
AppWord := GetActiveOleObject("Word.Application");
//AppWord.Visible:=false;
except
try
AppWord := CreateOleObject("Word.Application");
//AppWord.Visible:=false;
except
Exception.Create("Error");
end;
end;
AppWord.Documents.Add;//Ñîçäàåì ÷èñòûé ëèñò
AppWord.ActiveDocument.PageSetup.Orientation:=wdOrientLandscape;//Äåëàåì îðèåíòàöèþ Àëüáîìíóþ
AppWord.Selection.Paste;//Âñòàâëÿåì èç Clip
AppWord.Selection.WholeStory;//âûäåëèòü âñå CTR+A
//Ïðåâðàùàåì òåêñò â Òàáëèöó
AppWord.Selection.ConvertToTable(Separator:=#9, NumColumns:=Col);
AppWord.Selection.HomeKey(Unit:=wdLine);
AppWord.ActiveWindow.ActivePane.View.Zoom.Percentage:=75;//Óñòàíàâëèâàåì ìàñøòàá
AppWord.Visible:=true;//äåëàåì ïðèëîæåíèå âèäèìûì
AppWord.Activate;
AppWord.WindowState:=wdWindowStateNormal;
end;
function DataSetToString(MainDBGrid:TDBGrid):string;
var
s:string;
col, row:integer;
begin
//Åñëè ìíîæåñòâåííûé âûáîð òî
if (dgMultiSelect in MainDBGrid.Options) then
begin
for row:=0 to MainDBGrid.SelectedRows.Count-1 do
begin
for col := 0 to MainDBGrid.Columns.Count - 1 do
begin
s := s + MainDBGrid.Columns.Items[col].Field.AsString + #9;
end;
s := s + #13 + #10;
end;
end
else
begin
//äîáàâëÿåì ñòðîêè èç DBGrid â ïåðåìåííóþ S
MainDBGrid.DataSource.DataSet.First;
while not MainDBGrid.DataSource.DataSet.EOF do
begin
for col := 0 to MainDBGrid.Columns.Count - 1 do
begin
s := s + MainDBGrid.Columns.Items[col].Field.AsString + #9;
end;
s := s + #13 + #10;
MainDBGrid.DataSource.DataSet.Next;
end;
end;
Result:=s;
end;
//toApp ðàâíî åñëè Excel òî 1, Word òî 2,
procedure ExportDBGrid(toApp: integer; MainDBGrid:TDBGrid; MainForm:TForm);
var
bm: TBookmark;
col: Integer;
s:String;
begin
Screen.Cursor := crHourglass;
MainDBGrid.DataSource.DataSet.DisableControls;
bm := MainDBGrid.DataSource.DataSet.GetBookmark;
s := "";
// äîáàâëÿåì èíôîðìàöèþ äëÿ èì¸í êîëîíîê
for col := 0 to MainDBGrid.FieldCount-1 do
s := s + MainDBGrid.Columns.Items[col].Title.Caption + #9;
//s := s+#10+#13;
s:=s+#10+#13+DataSetToString(MainDBGrid);
LanguageKeyboard;
Clipboard.AsText := s; //Äàííûå - â áóôåð!!!
MainDBGrid.DataSource.DataSet.GotoBookmark(bm);
MainDBGrid.DataSource.DataSet.FreeBookmark(bm);
MainDBGrid.DataSource.DataSet.EnableControls;
//Îïðåäåëÿì êóäà íàïðàâëÿòü
case toApp of
1: CreateExcel();
2: CreateWord(MainDBGrid.FieldCount+1);
end;
Screen.Cursor := crDefault;
end;
end.
← →
Чуча (2006-12-20 19:33) [2]А если из отчета в delphi, тогда как?
← →
rar © (2006-12-20 21:11) [3]из какого отчета, это очень обстрактно,
конкретнее
← →
rar © (2006-12-20 21:11) [4]из какого отчета, это очень обстрактно,
конкретнее
← →
YurikGL © (2006-12-20 21:52) [5]http://www.delphimaster.ru/articles/dbtoword/index.html
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c