CSV格式将数据转换为EXCEL的函数

发布于:2021-12-06 08:40:26

csv 格式将数据转换为 excel 的函数

声明部分 procedure DataToExcelCSV(SaveFileName:string;DataSet:TDataSet;ShowC ompleteBoX: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].Fiel dName) else TempStr:=CheckStr(DataSet.Fields[k].FieldName) end;(* for K:=1 to FieldCount do*) for i:= 1 to GroupCount-1 do TempStr:=TempStr+','+TempSt r; 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].As String); //-----------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;


相关推荐

最新更新

猜你喜欢