自定义导出Excel函数 - 方案2


//自定义导出Excel
function uf_Ex2();
var
	s:TStringList;
    str,filePath:string;
    i1,i2 :Integer;
    sd: TSaveDialog;
begin
	//try
    	if SKBILLgrid1.DataSource.DataSet.IsEmpty  then
        begin
			messagebox('没有可导出的数据','运行提示',0);
            exit;
        end;

		sd := TSaveDialog.Create(Self);
	    sd.Title := '请选择保存路径';
	    sd.Filter := '*.xls|*.xls';
	    sd.DefaultExt := '.xls';
		if sd.Execute and (trim(sd.FileName) <> '') then
        begin
	        //保存路径
	        filePath := Trim(sd.FileName);
	        //messagebox(filePath,'运行提示',0);

	        //导中文表头
	        str :='';
	        for i1 :=0 to SKBILLgrid1.Columns.Count - 1 do
	        begin
	            str := str + SKBILLgrid1.Columns.Items[i1].Title.Caption + #9;
	        end;
	        str := str + #13;

            try
	            dssub1.DisableControls;
	            dssub1.First;
	            while not dssub1.Eof do
	            begin
	                for i2 := 0 to SKBILLgrid1.Columns.Count -1 do
	                begin
	                    str := str + dssub1.FieldByName(SKBILLgrid1.Columns.Items[i2].FieldName).AsString + #9;
	                end;
	                dssub1.Next;
	                str := str + #13;
	            end;
	        finally
	            dssub1.EnableControls;
	        end;
	        str := str + #13;

	        try
	            s:=TStringList.Create;
	            s.Add(str);
	            s.SaveToFile(filePath);
	            messagebox('导出成功!','运行提示',0);
	        except
	            messagebox('导出失败!','运行提示',0);
	            s.Free;
	            sd.Free;
	        end;
        end;
	//except
		//messagebox('导出失败!','运行提示',0);
    //end;
end;

方案1,2都有个缺点,条目数多了以后,导出很慢,或卡死。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值