delphi7 压缩excel出现乱码
library ConvertFormat;uses SysUtils, Classes, ZLib; {$R *.res}//压缩function CompressFile(const DestFile,SrcFile:pchar):Boolean; stdcall;var des:TMemoryStream; sou:TMemoryStream; cs: TCompressionStream; Count: Integer; ret:boolean; level: TCompressionLevel;begin ret:=false; level:= clFastest; des:=TMemoryStream.Create; sou:= TMemoryStream.Create; cs:=TCompressionStream.Create(level,des); try sou.LoadFromFile(SrcFile); Count:=sou.Size; sou.SaveToStream(cs); cs.Free; sou.Clear; sou.WriteBuffer(Count, SizeOf(Count)); sou.CopyFrom(des,0); des.Clear; des.Seek(0,soFromBeginning); des.CopyFrom(sou,0); des.SaveToFile(DestFile); ret:=true; finally des.Free; sou.Free; result:=ret; end;end;//解压缩function DeCompressFile(const DestFile,SrcFile:pchar):boolean;stdcall;var des:TFileStream; sou:TMemoryStream; decs: TDeCompressionStream; Buffer: PChar; Count: integer; ret:boolean;begin Buffer:=nil; ret:=false; des:=TFileStream.Create(DestFile,fmCreate); sou:= TMemoryStream.Create; decs:=nil; try sou.LoadFromFile(SrcFile); sou.Seek(0,soFromBeginning); sou.ReadBuffer(count,sizeof(count)); GetMem(Buffer, Count); decs:=TDeCompressionStream.Create(sou); decs.ReadBuffer(Buffer^, Count); Des.WriteBuffer(Buffer^, Count); Des.Position := 0;//复位流指针 ret:=true; finally FreeMem(Buffer); decs.Free; des.Free; sou.Free; result:=ret; end;end;exportsCompressFile, DeCompressFile;beginend.