7 个解决方案
#1
搜索一下
#2
procedure TLogQueryForm.SaveAsExcel(FileName:string);
var
ExcelApp,WorkBook: Variant;
i,j,k:integer; //i列No,j行No,k可见列
s:string;
SavePlace: TBookmark;
Range :Variant;
ProgressThread:THSProgressThread;
CurRecCount:integer;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
WorkBook := CreateOleObject('Excel.Sheet');
Except
Exception.Create('对不起,您的机器上没有安装Microsoft Excel,该文件不能生成!');
Exit;
End; //try...Except
if FileExists(FileName) then
DeleteFile(FileName);
SavePlace:=nil;
try
SavePlace := QryLog.GetBookmark;
QryLog.DisableControls;
QryLog.First;
ProgressThread :=THSProgressThread.Create(Format('正在导出到%s文档(共%d条)...',['Excel',QryLog.RecordCount]),'导出进度',QryLog.RecordCount,1);
try
ExcelApp.Visible := false;
ExcelApp.Caption := '导出文件';
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.Name := '系统操作日志';
//导出标题...
k:=0;
for i := 0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
ExcelApp.Cells(1,k+1) := dbgLog.Columns[i].Title.Caption;
if dbgLog.Columns[i].Field.DataType = ftString then
begin
ExcelApp.ActiveSheet.Columns[k+1].numberformatlocal:= '@';
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth:= Max(dbgLog.Columns[i].Field.Size,dbgLog.Columns[i].Width/8);
{
if Assigned(DBGrid.Columns[i].Field.OnGetText) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := 30 //需要代码转名称字段默认长度30
else
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := DBGrid.Columns[i].Field.Size;
if Cardinal(DBGrid.Columns[i].Field.Size)<strlen(pchar(DBGrid.Columns[i].Title.Caption)) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := strlen(pchar(DBGrid.Columns[i].Title.Caption));
}
end;
k:=k+1;
end;
//导出每行数据...
j:=2;
while not QryLog.Eof do
begin
k:=0;
for i:=0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
s := dbgLog.Columns[i].Field.DisplayText;
ExcelApp.Cells(j,k+1) := s;
k:=k+1;
end;//i
j:=j+1;
QryLog.Next;
if ProgressThread.Terminated then Exit;
ProgressThread.SetPosition(j);
// if Assigned(FOnSaveToFile) then FOnSaveToFile(Index,FileName,QuyRecordCount,j);
end;
//标题栏字体,背景色
ExcelApp.ActiveSheet.Rows[1].Font.Name := '宋体';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlack;
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+'1'];
Range.interior.Color := clSilver;
//自动加外边框
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+inttostr(j-1)];
Range.Borders.LineStyle := 1;
Range.WrapText:=True;
Range.VerticalAlignMent:= 1;
Range.HorizontalAlignment:=1;
//保存文件
WorkBook.Saveas(FileName);
except
Application.MessageBox(PChar('生成Excel文件【'+FileName+'】出错!'),'提示',MB_OK+MB_ICONINFORMATION);
end;
finally
ProgressThread.Free;
QryLog.EnableControls;
QryLog.GotoBookmark(SavePlace);
QryLog.FreeBookmark(SavePlace);
WorkBook.Close;
ExcelApp.Quit;
end;
end;
var
ExcelApp,WorkBook: Variant;
i,j,k:integer; //i列No,j行No,k可见列
s:string;
SavePlace: TBookmark;
Range :Variant;
ProgressThread:THSProgressThread;
CurRecCount:integer;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
WorkBook := CreateOleObject('Excel.Sheet');
Except
Exception.Create('对不起,您的机器上没有安装Microsoft Excel,该文件不能生成!');
Exit;
End; //try...Except
if FileExists(FileName) then
DeleteFile(FileName);
SavePlace:=nil;
try
SavePlace := QryLog.GetBookmark;
QryLog.DisableControls;
QryLog.First;
ProgressThread :=THSProgressThread.Create(Format('正在导出到%s文档(共%d条)...',['Excel',QryLog.RecordCount]),'导出进度',QryLog.RecordCount,1);
try
ExcelApp.Visible := false;
ExcelApp.Caption := '导出文件';
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.Name := '系统操作日志';
//导出标题...
k:=0;
for i := 0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
ExcelApp.Cells(1,k+1) := dbgLog.Columns[i].Title.Caption;
if dbgLog.Columns[i].Field.DataType = ftString then
begin
ExcelApp.ActiveSheet.Columns[k+1].numberformatlocal:= '@';
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth:= Max(dbgLog.Columns[i].Field.Size,dbgLog.Columns[i].Width/8);
{
if Assigned(DBGrid.Columns[i].Field.OnGetText) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := 30 //需要代码转名称字段默认长度30
else
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := DBGrid.Columns[i].Field.Size;
if Cardinal(DBGrid.Columns[i].Field.Size)<strlen(pchar(DBGrid.Columns[i].Title.Caption)) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := strlen(pchar(DBGrid.Columns[i].Title.Caption));
}
end;
k:=k+1;
end;
//导出每行数据...
j:=2;
while not QryLog.Eof do
begin
k:=0;
for i:=0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
s := dbgLog.Columns[i].Field.DisplayText;
ExcelApp.Cells(j,k+1) := s;
k:=k+1;
end;//i
j:=j+1;
QryLog.Next;
if ProgressThread.Terminated then Exit;
ProgressThread.SetPosition(j);
// if Assigned(FOnSaveToFile) then FOnSaveToFile(Index,FileName,QuyRecordCount,j);
end;
//标题栏字体,背景色
ExcelApp.ActiveSheet.Rows[1].Font.Name := '宋体';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlack;
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+'1'];
Range.interior.Color := clSilver;
//自动加外边框
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+inttostr(j-1)];
Range.Borders.LineStyle := 1;
Range.WrapText:=True;
Range.VerticalAlignMent:= 1;
Range.HorizontalAlignment:=1;
//保存文件
WorkBook.Saveas(FileName);
except
Application.MessageBox(PChar('生成Excel文件【'+FileName+'】出错!'),'提示',MB_OK+MB_ICONINFORMATION);
end;
finally
ProgressThread.Free;
QryLog.EnableControls;
QryLog.GotoBookmark(SavePlace);
QryLog.FreeBookmark(SavePlace);
WorkBook.Close;
ExcelApp.Quit;
end;
end;
#3
procedure Tfrmptax.Button3Click(Sender: TObject);
var ExcelApp,WorkBook:OLEVariant;
i,j :integer;
xlsFileName:string;
recycle_length:integer;
s_date:string;
begin
s_date:=edit2.Text;
savedialog2.Execute;
xlsFileName:=savedialog2.FileName ;
if xlsfilename='' then
begin
showmessage('操作成功取消!');
end
else
begin
if edit2.text=''then
begin
with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax');
open;
recycle_length:=query4.Fields[0].AsInteger ;
end;
progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop);
Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号';
ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额';
ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额';
j:=1;
//.
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
//.
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin
ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=table3.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=table3.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=table3.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=table3.fieldbyname('T_deduct').Asfloat;
ExcelApp.Cells(i,6):=table3.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(table3.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=table3.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=table3.fieldbyname('T_amountax').Asfloat;
j:=j+1;
table3.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat;
WorkBook.SaveAS(xlsFileName);
WorkBook.close;
ShowMessage('导入Excel成功!');
end
else
begin
with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax'
+' where T_date = '+ #39+s_date+#39);
open;
recycle_length:=query4.Fields[0].AsInteger ;
end;
with query5 do
begin
CommUtils.initialQuery(Query5,'select T_id,T_name,T_total,T_deduct,T_taxrate,T_quick, T_taxable,T_amountax from tax '
+'where T_date ='+ #39+s_date+#39+'order by T_id');
open;
end;
progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop);
Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号';
ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额';
ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额';
j:=1;
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin
ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=Query5.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=Query5.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=Query5.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=Query5.fieldbyname('T_deduct').Asfloat;
ExcelApp.Cells(i,6):=Query5.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(Query5.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=Query5.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=Query5.fieldbyname('T_amountax').Asfloat;
j:=j+1;
query5.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat;
WorkBook.SaveAS(xlsFileName);
WorkBook.close;
ShowMessage('导入Excel成功!');
end;
end;
end;
#4
up
网上代码n多
网上代码n多
#5
uses ComObj;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel:Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MsExcel:=createOLEobject('excel.application');
MsExcel.workBooks.add;
Msexcel.visible:=false;
with DataSource1.Dataset do
begin
first;
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
end;
j:=2;
while not eof do
begin
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[j,i+1].numberformat:='@';
Msexcel.cells[j,i+1].value:=fields[i].AsString ;
end;
inc(j);
next;
end;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel:Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MsExcel:=createOLEobject('excel.application');
MsExcel.workBooks.add;
Msexcel.visible:=false;
with DataSource1.Dataset do
begin
first;
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
end;
j:=2;
while not eof do
begin
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[j,i+1].numberformat:='@';
Msexcel.cells[j,i+1].value:=fields[i].AsString ;
end;
inc(j);
next;
end;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;
#6
UP ...
#7
谢谢大家帮忙!!特别感谢workers,pdbird,alinsoft
#1
搜索一下
#2
procedure TLogQueryForm.SaveAsExcel(FileName:string);
var
ExcelApp,WorkBook: Variant;
i,j,k:integer; //i列No,j行No,k可见列
s:string;
SavePlace: TBookmark;
Range :Variant;
ProgressThread:THSProgressThread;
CurRecCount:integer;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
WorkBook := CreateOleObject('Excel.Sheet');
Except
Exception.Create('对不起,您的机器上没有安装Microsoft Excel,该文件不能生成!');
Exit;
End; //try...Except
if FileExists(FileName) then
DeleteFile(FileName);
SavePlace:=nil;
try
SavePlace := QryLog.GetBookmark;
QryLog.DisableControls;
QryLog.First;
ProgressThread :=THSProgressThread.Create(Format('正在导出到%s文档(共%d条)...',['Excel',QryLog.RecordCount]),'导出进度',QryLog.RecordCount,1);
try
ExcelApp.Visible := false;
ExcelApp.Caption := '导出文件';
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.Name := '系统操作日志';
//导出标题...
k:=0;
for i := 0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
ExcelApp.Cells(1,k+1) := dbgLog.Columns[i].Title.Caption;
if dbgLog.Columns[i].Field.DataType = ftString then
begin
ExcelApp.ActiveSheet.Columns[k+1].numberformatlocal:= '@';
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth:= Max(dbgLog.Columns[i].Field.Size,dbgLog.Columns[i].Width/8);
{
if Assigned(DBGrid.Columns[i].Field.OnGetText) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := 30 //需要代码转名称字段默认长度30
else
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := DBGrid.Columns[i].Field.Size;
if Cardinal(DBGrid.Columns[i].Field.Size)<strlen(pchar(DBGrid.Columns[i].Title.Caption)) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := strlen(pchar(DBGrid.Columns[i].Title.Caption));
}
end;
k:=k+1;
end;
//导出每行数据...
j:=2;
while not QryLog.Eof do
begin
k:=0;
for i:=0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
s := dbgLog.Columns[i].Field.DisplayText;
ExcelApp.Cells(j,k+1) := s;
k:=k+1;
end;//i
j:=j+1;
QryLog.Next;
if ProgressThread.Terminated then Exit;
ProgressThread.SetPosition(j);
// if Assigned(FOnSaveToFile) then FOnSaveToFile(Index,FileName,QuyRecordCount,j);
end;
//标题栏字体,背景色
ExcelApp.ActiveSheet.Rows[1].Font.Name := '宋体';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlack;
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+'1'];
Range.interior.Color := clSilver;
//自动加外边框
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+inttostr(j-1)];
Range.Borders.LineStyle := 1;
Range.WrapText:=True;
Range.VerticalAlignMent:= 1;
Range.HorizontalAlignment:=1;
//保存文件
WorkBook.Saveas(FileName);
except
Application.MessageBox(PChar('生成Excel文件【'+FileName+'】出错!'),'提示',MB_OK+MB_ICONINFORMATION);
end;
finally
ProgressThread.Free;
QryLog.EnableControls;
QryLog.GotoBookmark(SavePlace);
QryLog.FreeBookmark(SavePlace);
WorkBook.Close;
ExcelApp.Quit;
end;
end;
var
ExcelApp,WorkBook: Variant;
i,j,k:integer; //i列No,j行No,k可见列
s:string;
SavePlace: TBookmark;
Range :Variant;
ProgressThread:THSProgressThread;
CurRecCount:integer;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
WorkBook := CreateOleObject('Excel.Sheet');
Except
Exception.Create('对不起,您的机器上没有安装Microsoft Excel,该文件不能生成!');
Exit;
End; //try...Except
if FileExists(FileName) then
DeleteFile(FileName);
SavePlace:=nil;
try
SavePlace := QryLog.GetBookmark;
QryLog.DisableControls;
QryLog.First;
ProgressThread :=THSProgressThread.Create(Format('正在导出到%s文档(共%d条)...',['Excel',QryLog.RecordCount]),'导出进度',QryLog.RecordCount,1);
try
ExcelApp.Visible := false;
ExcelApp.Caption := '导出文件';
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.Name := '系统操作日志';
//导出标题...
k:=0;
for i := 0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
ExcelApp.Cells(1,k+1) := dbgLog.Columns[i].Title.Caption;
if dbgLog.Columns[i].Field.DataType = ftString then
begin
ExcelApp.ActiveSheet.Columns[k+1].numberformatlocal:= '@';
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth:= Max(dbgLog.Columns[i].Field.Size,dbgLog.Columns[i].Width/8);
{
if Assigned(DBGrid.Columns[i].Field.OnGetText) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := 30 //需要代码转名称字段默认长度30
else
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := DBGrid.Columns[i].Field.Size;
if Cardinal(DBGrid.Columns[i].Field.Size)<strlen(pchar(DBGrid.Columns[i].Title.Caption)) then
ExcelApp.ActiveSheet.Columns[k+1].ColumnWidth := strlen(pchar(DBGrid.Columns[i].Title.Caption));
}
end;
k:=k+1;
end;
//导出每行数据...
j:=2;
while not QryLog.Eof do
begin
k:=0;
for i:=0 to dbgLog.Columns.Count-1 do
begin
if not dbgLog.Columns[i].Visible then Continue;
s := dbgLog.Columns[i].Field.DisplayText;
ExcelApp.Cells(j,k+1) := s;
k:=k+1;
end;//i
j:=j+1;
QryLog.Next;
if ProgressThread.Terminated then Exit;
ProgressThread.SetPosition(j);
// if Assigned(FOnSaveToFile) then FOnSaveToFile(Index,FileName,QuyRecordCount,j);
end;
//标题栏字体,背景色
ExcelApp.ActiveSheet.Rows[1].Font.Name := '宋体';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlack;
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+'1'];
Range.interior.Color := clSilver;
//自动加外边框
Range := ExcelApp.ActiveSheet.Range['A'+'1'+':'+DecTo26(k-1)+inttostr(j-1)];
Range.Borders.LineStyle := 1;
Range.WrapText:=True;
Range.VerticalAlignMent:= 1;
Range.HorizontalAlignment:=1;
//保存文件
WorkBook.Saveas(FileName);
except
Application.MessageBox(PChar('生成Excel文件【'+FileName+'】出错!'),'提示',MB_OK+MB_ICONINFORMATION);
end;
finally
ProgressThread.Free;
QryLog.EnableControls;
QryLog.GotoBookmark(SavePlace);
QryLog.FreeBookmark(SavePlace);
WorkBook.Close;
ExcelApp.Quit;
end;
end;
#3
procedure Tfrmptax.Button3Click(Sender: TObject);
var ExcelApp,WorkBook:OLEVariant;
i,j :integer;
xlsFileName:string;
recycle_length:integer;
s_date:string;
begin
s_date:=edit2.Text;
savedialog2.Execute;
xlsFileName:=savedialog2.FileName ;
if xlsfilename='' then
begin
showmessage('操作成功取消!');
end
else
begin
if edit2.text=''then
begin
with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax');
open;
recycle_length:=query4.Fields[0].AsInteger ;
end;
progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop);
Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号';
ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额';
ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额';
j:=1;
//.
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
//.
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin
ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=table3.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=table3.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=table3.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=table3.fieldbyname('T_deduct').Asfloat;
ExcelApp.Cells(i,6):=table3.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(table3.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=table3.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=table3.fieldbyname('T_amountax').Asfloat;
j:=j+1;
table3.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat;
WorkBook.SaveAS(xlsFileName);
WorkBook.close;
ShowMessage('导入Excel成功!');
end
else
begin
with query4 do
begin
CommUtils.initialQuery(Query4,'select count(T_id),sum(T_taxable),sum(T_amountax) from tax'
+' where T_date = '+ #39+s_date+#39);
open;
recycle_length:=query4.Fields[0].AsInteger ;
end;
with query5 do
begin
CommUtils.initialQuery(Query5,'select T_id,T_name,T_total,T_deduct,T_taxrate,T_quick, T_taxable,T_amountax from tax '
+'where T_date ='+ #39+s_date+#39+'order by T_id');
open;
end;
progressbar1.Max := recycle_length;
progressbar1.position:=0;
try
ExcelApp:= CreateOleObject( 'Excel.Application' );
WorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',mb_OK+mb_IconStop);
Exit;
end;
//workBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)+'excel.xls');
WorkBook:=ExcelApp.workbooks.Add;
ExcelApp.Cells(1,1):='条数';
ExcelApp.Cells(1,2):='工号';
ExcelApp.Cells(1,3):='姓名';
ExcelApp.Cells(1,4):='人民币合计';
ExcelApp.Cells(1,5):='减除费用额';
ExcelApp.Cells(1,6):='应纳税所得税';
ExcelApp.Cells(1,7):='税率';
ExcelApp.Cells(1,8):='速算扣除数';
ExcelApp.Cells(1,9):='扣缴所得税额';
j:=1;
CommUtils.initialTable(table3,TBLNAME_TAX+'.dbf');
table3.Open;
table3.First;
for i:=2 to recycle_length+1 do
begin
ExcelApp.Cells(i,1):=j;
ExcelApp.Cells(i,2):=Query5.fieldbyname('T_id').Asstring;
ExcelApp.Cells(i,3):=Query5.fieldbyname('T_name').Asstring;
ExcelApp.Cells(i,4):=Query5.fieldbyname('T_total').Asfloat;
ExcelApp.Cells(i,5):=Query5.fieldbyname('T_deduct').Asfloat;
ExcelApp.Cells(i,6):=Query5.fieldbyname('T_taxable').Asstring;
ExcelApp.Cells(i,7):=FloatToStr(Query5.fieldbyname('T_taxrate').asFloat*100)+'%';
ExcelApp.Cells(i,8):=Query5.fieldbyname('T_quick').Asfloat;
ExcelApp.Cells(i,9):=Query5.fieldbyname('T_amountax').Asfloat;
j:=j+1;
query5.next;
progressbar1.position:=progressbar1.position+1;
progressbar1.refresh ;
end;
ExcelApp.Cells(recycle_length+2,1):='合计';
ExcelApp.Cells(recycle_length+2,6):=query4.Fields[1].Asfloat;
ExcelApp.Cells(recycle_length+2,9):=query4.Fields[2].Asfloat;
WorkBook.SaveAS(xlsFileName);
WorkBook.close;
ShowMessage('导入Excel成功!');
end;
end;
end;
#4
up
网上代码n多
网上代码n多
#5
uses ComObj;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel:Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MsExcel:=createOLEobject('excel.application');
MsExcel.workBooks.add;
Msexcel.visible:=false;
with DataSource1.Dataset do
begin
first;
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
end;
j:=2;
while not eof do
begin
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[j,i+1].numberformat:='@';
Msexcel.cells[j,i+1].value:=fields[i].AsString ;
end;
inc(j);
next;
end;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MSExcel:Variant;
i,j:integer;
begin
SaveDialog1.Filter:='*.XLS|*.XLS';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
MsExcel:=createOLEobject('excel.application');
MsExcel.workBooks.add;
Msexcel.visible:=false;
with DataSource1.Dataset do
begin
first;
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
end;
j:=2;
while not eof do
begin
for i:=0 to fieldcount-1 do
begin
Msexcel.cells[j,i+1].numberformat:='@';
Msexcel.cells[j,i+1].value:=fields[i].AsString ;
end;
inc(j);
next;
end;
end;
MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
MSExcel.ActiveWorkBook.Saved:=True;
MSExcel.Quit;
end;
end;
#6
UP ...
#7
谢谢大家帮忙!!特别感谢workers,pdbird,alinsoft