• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

我写的采用csv格式将数据转换为excel的函数,带有分栏功能_delphi教程 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

声明部分
procedure  DataToExcelCSV(SaveFileName:string;DataSet:TDataSet;ShowCompleteBoX:Boolean=True;GroupCount:integer=1);

......
{------------------------------------------------------}
{检测findStr是否in mainStr,如果存在则返回True,否则False}
{------------------------------------------------------}
function TFun.IsStrInOtherStr(mainStr,FindStr: string): Bool;
begin
 if strPos(pAnsiChar(mainStr),pAnsichar(FindStr))=nil
 then
   result:=False
 else
   result:=True;
end;
-------------------------------------------------------------------------------------
//lijinhao 2004-4-4
//采用csv格式..将数据转换为excel.
//速度非常快,而且具有分栏功能
//避免了用comobj带来到弊端
//GroupCount:用于设定分栏数。。默认为1
//ShowCompleteBoX:boolean;来设定完成是否显示完成提示
//-------------------------------------------------------------------------------
procedure  TFun.DataToExcelCSV(SaveFileName:string;DataSet:TDataSet;ShowCompleteBoX:Boolean;GroupCount:integer);
  Function CheckStr(str:string):string;
  begin
    if IsStrInOtherStr(str,,) then str:="+str+";
    result:=str;
  end;
  //===============//
var
  ExcelFile:TextFile;
  iRecordCount:integer;//记录数
  iFieldCount:integer;//字段数
  i,j,k:integer;
  TempStr:string;
begin
  try
     if  Not DataSet.Active then DataSet.Open;
     iRecordCount:=DataSet.RecordCount;
     iFieldCount:=DataSet.FieldCount;
     assignFile(ExcelFile,SaveFileName+.csv);
     rewrite(ExcelFile);
     DataSet.First;
     (*--------写字段头------*)
      TempStr:=;
      for K:=0 to iFieldCount-1 do //字段数
      begin
        if TempStr<> then
         TempStr:=TempStr+,+CheckStr(DataSet.Fields[k].FieldName)
        else
         TempStr:=CheckStr(DataSet.Fields[k].FieldName)
      end;(* for K:=1 to FieldCount do*)
      for i:= 1 to GroupCount-1 do  TempStr:=TempStr+,+TempStr;
      writeLn(ExcelFile,TempStr);
      //---------------------------------
     (*写入记录,按分栏数来写*)
     i:=1;
     while i<=round(iRecordCount div GroupCount) do
     begin
       TempStr:=;
       //如:F0 F1 F2 F3 | F0 F1 F2 F3
        for j:=1 to GroupCount do //分栏数
        begin
           if DataSet.Eof then break;
           inc(i);
           for K:=0 to iFieldCount-1 do //字段数
           begin
            //--------------
             if tempstr<> then
                TempStr:=TempStr+,+CheckStr(DataSet.Fields[k].AsString)
             else
                TempStr:=CheckStr(DataSet.Fields[k].AsString);
            //------------
           end;(* for K:=1 to FieldCount do*)
           DataSet.Next;
        end;(* for j:=1 to GroupCount do*)
        writeLn(ExcelFile,TempStr);
       if DataSet.Eof then break;
    end;//while i<=round(iRecordCount div GroupCount) do
    if ShowCompleteBoX then MessageBox(0,完成DataToExcel的转换!,完成提示:,mb_ok+MB_IconInformation)
 finally
   closeFile(ExcelFile);
 end;
end;


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi中如何处理“幽灵”、“熔断”?(转载)发布时间:2022-07-18
下一篇:
Delphi实现树型结构发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap