请问:怎样把ListView里的Items保存成Excel文件?(100分)

  • 主题发起人 主题发起人 fxingf
  • 开始时间 开始时间
F

fxingf

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:我想把ListView里的Items保存成Excel文件或其他形式文件,怎样做到?
 
可能不能直接保存,你可以参考ole或者使用delphi带的office控件,编程往里边写
 
自己遍历一遍往文件里写吧。
For I:=0 to ListView1.Items.Count-1
begin
.......
end;
 
copy from advlistview
procedure TAdvListView.SavetoXLS(filename:string);
var
fexcel:variant;
fworkbook:variant;
fworksheet:variant;
farray:variant;
s,z:integer;
rangestr:string[12];
lis:tlistitem;

begin
screen.cursor:=crHourGlass;

try
FExcel:=CreateOleObject('excel.application');
except
screen.cursor:=crDefault;
raise EAdvListViewError.Create('Excel OLE server not found');
exit;
end;

FWorkBook := FExcel.WorkBooks.Add;
FWorkSheet := FWorkBook.WorkSheets.Add;

farray:=vararraycreate([0,self.items.count-1,0,self.columns.count-1],varVariant);

for s:=0 to self.items.count-1 do
begin
lis:=self.items;
for z:=0 to self.columns.count-1 do
begin
if z=0 then farray[s,z]:=lis.caption
else
begin
if z-1>=lis.subitems.Count then
farray[s,z]:=''
else
farray[s,z]:=lis.subitems[z-1];
end;
end;
end;

rangestr:='A1:';

if (self.Columns.count>26) then
begin
rangestr:=rangestr+chr(ord('A')-1+(self.columns.count div 26));
rangestr:=rangestr+chr(ord('A')-1+(self.columns.count mod 26));
end
else
rangestr:=rangestr+chr(ord('A')-1+self.columns.count);

rangestr:=rangestr+inttostr(self.items.count);

FWorkSheet.Range[rangestr].Value:=fArray;

FWorkbook.SaveAs(filename);

FExcel.Quit;
FExcel:=unassigned;

screen.cursor:=crDefault;
end;
 
有循环往程序里写,或者干脆写个控件来实现吧.
 
关键是学会如何操作EXECL文件,以及如何往EXCEL文件中写数据
至于从树中取数据,还是从哪取数据并不重要....
 
to Nstar
请详细!
 
同意NStar,你可以找一下关于Excel的操作方法,你搜一下Excel会有很多相关的贴子,
然后把数据写入即可。
 
多人接受答案了。
 
后退
顶部