📄 tools.pas
字号:
unit tools;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables,inifiles,ComCtrls, StdCtrls, ToolWin, Grids, Db,DBGrids,
ExtCtrls, Buttons, Menus, Tgrids2,DbTree,DBClient, OleServer, Excel97,ComObj,
DBCtrls,printers,registry,AgentObjects_TLB,DBGridEh;
function FormatLongDate(const userdate:Tdate):string;
procedure CopyDbDataToExcel(Args: array of const); //dbgrid导出到EXCEL表 CopyDbDataToExcel([DBGrid1]);
procedure CopyDbEhDataToExcel (Args: array of const); ////dbgridEH导出到EXCEL表
implementation
uses main;
function FormatLongDate(const userdate:Tdate):string;
//日期型转换为????年??月??日格式的字符串函数
var
y,m,d:word;
m1,d1:string;
begin
try
strTodate(dateToStr(userdate));
except
result := '非法日期';
exit;
end;
DecodeDate(userdate, y, m, d);
if m<10 then
m1:='0'+intTostr(m)
else
m1:=intTostr(m);
if d<10 then
d1:='0'+intTostr(d)
else
d1:=intTostr(d);
result:=intTostr(y)+'年'+m1+'月'+d1+'日';
end;
procedure CopyDbDataToExcel(Args: array of const); //dbgrid导出到EXCEL表
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) + 1;
for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];
if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
TDBGrid(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;
jCount := 1;
while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[jCount + 1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
Inc(jCount);
TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;
procedure CopyDbEhDataToExcel(Args: array of const); //dbgrid导出到EXCEL表
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) + 1;
for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGridEh(Args[I].VObject).Name;
Sheet := XLApp.Workbooks[1].WorkSheets[TDBGridEh(Args[I].VObject).Name];
if not TDBGridEh(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
TDBGridEh(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGridEh(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount + 1] :=
TDBGridEh(Args[I].VObject).Columns.Items[iCount].Title.Caption;
jCount := 1;
while not TDBGridEh(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGridEh(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[jCount + 1, iCount + 1] :=
TDBGridEh(Args[I].VObject).Columns.Items[iCount].Field.AsString;
Inc(jCount);
TDBGridEh(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -