//////////////////////////////// Excel 的一个宏 ///////////////////////////////////
Sub setpageinfo(ByVal regDateStr As String)
Dim I, maxRow As Integer
'取得最大行 maxRow
Range("A1").Select
ActiveCell.SpecialCells(xlLastCell).Select
maxRow = ActiveCell.Row
'取得有日期的行
I = maxRow
Range("A1").Select
While (Range("A" & CStr(I)).Value <> "dateLine") And (I >= 1)
'If Range("A" & CStr(I)).Value = "change1" Then
' Rows(CStr(I) & ":" & CStr(I)).RowHeight = 21
'End If
I = I - 1
Wend
'写入日期
Range("G" & CStr(I)).Select
ActiveCell.FormulaR1C1 = buyDateStr
'删除 A 列
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End Sub
//////////////////////////////// Delphi ///////////////////////////////////
uses comobj,excel97;
function ToExcelReport(dxSourceList: TdxTreeList):boolean;
var XLApp,workbook,sheet:Variant; I_Row,I_Father,I_Child,I,J:integer;
begin
result:=true;
try
if not VarIsEmpty(XLApp) then begin
XLApp.displayAlerts:=false;
XLApp.quit;
end;
(1) {--- 打开 Excel 文件 ----}
XLApp:=createOleObject('Excel.Application');
XLApp.WorkBooks.Add(A_FileName); //A_FileName:一个已存在的文件
workbook := XLApp.workbooks[1];
sheet:=workbook.worksheets[1];
XLApp.displayAlerts:=false;
XLApp.ScreenUpdating:=true;
(2) {--- 创建新 Excel 文件 ----}
XLApp:=createOleObject('Excel.Application');
//XLApp.visible:=true;
XLApp.WorkBooks.Add(xlWBatWorkSheet); // new workSheet
XLApp.WorkBooks[1].worksheets[1].name:='NewWorkSheet';
workbook := XLApp.workbooks[1];
sheet:=workbook.worksheets[1];
XLApp.displayAlerts:=false;
XLApp.ScreenUpdating:=true;
I_Father:=dxSourceList.Count ; I_Row:=1;
for I:=0 to I_Father-1 do begin
I_Child:=dxSourceList.items[I].Count ;
sheet.cells[I_Row,1]:=dxSourceList.items[I].strings[0];
I_Row:=I_Row+1;
for J:=0 to I_Child-1 do begin
sheet.cells[I_Row,1]:=dxSourceList.items[I].items[J].strings[0];
I_Row:=I_Row+1;
end;
end;
//运行宏
//XLApp.run('macroName',params...)
//workbook.save ;
workBook.SaveAs(AFileName,xlNormal,'','',False,False);
XLApp.visible:=true;
except
result:=false;
end;
end;
procedure Tform1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not VarIsEmpty(XLApp) then begin
XLApp.displayAlerts:=false;
XLApp.quit;
end;
end;