当用ListView控件显示数据时,如何将该控件的全部数据导出Excel ( 积分: 100 )

  • 主题发起人 主题发起人 Deoline
  • 开始时间 开始时间
D

Deoline

Unregistered / Unconfirmed
GUEST, unregistred user!
当使用ListView控件显示数据时(ListView.ViewStyle设置为vsReport),如何将该控件的全部数据导出Excel呢,请教各位大侠,在线等。。。
 
var<br>&nbsp;&nbsp;i,j:integer;<br>&nbsp;&nbsp;StrList:TStringList;<br>&nbsp;&nbsp;FStr:String;<br>begin<br>&nbsp;&nbsp;StrList:=TStringList.Create;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0&nbsp;To&nbsp;listview1.items.count&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FStr:=&nbsp;listview1.Items.Caption;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;:=&nbsp;0&nbsp;to&nbsp;listview1.Items.SubItems.Count&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FStr&nbsp;:=&nbsp;FStr&nbsp;+&nbsp;#9&nbsp;+&nbsp;listview1.Items.Subitems[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrList.Add(&nbsp;FStr&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;StrList.SaveToFile('d:/aa.xls');<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;StrList.Free;<br>&nbsp;&nbsp;end;<br>end;
 
这个写法的确是比较实用,也简单,但他还是解决不了我的问题,比如如何使他在导出之后直接打开该Excel表呢,还有就是,我要是想把导出去的数据在Excel中加上边框,那该如何处理啊?<br>大侠,能否再深入点,谢谢!
 
使用oleVariant对象处理<br>procedure&nbsp;CopyTOClibrd;<br>var<br>&nbsp;&nbsp;i,j:integer;<br>&nbsp;&nbsp;StrList:TStringList;<br>&nbsp;&nbsp;FStr:String;<br>begin<br>&nbsp;&nbsp;StrList:=TStringList.Create;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0&nbsp;To&nbsp;listview1.items.count&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FStr:=&nbsp;listview1.Items.Caption;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;:=&nbsp;0&nbsp;to&nbsp;listview1.Items.SubItems.Count&nbsp;-&nbsp;1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FStr&nbsp;:=&nbsp;FStr&nbsp;+&nbsp;#9&nbsp;+&nbsp;listview1.Items.Subitems[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrList.Add(&nbsp;FStr&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;Clipboard.AsText&nbsp;:=&nbsp;strlist.Text;&nbsp;//修改了空气清晰的代码,其他的都照搬的<br>&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;StrList.Free;<br>&nbsp;&nbsp;end;<br>end;&nbsp;&nbsp;<br><br>procedure&nbsp;SaveListViewToExcel;<br>var<br>&nbsp;&nbsp;SaveDialog:TSaveDialog;<br>&nbsp;&nbsp;ExcelApp:Variant;<br>begin<br>&nbsp;&nbsp;if&nbsp;(DataSet.Active&nbsp;=&nbsp;false)&nbsp;or&nbsp;(DataSet.RecordCount&nbsp;=&nbsp;0)&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveDialog:=TSaveDialog.Create(nil);<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveDialog.DefaultExt&nbsp;:=&nbsp;'xls';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveDialog.Filter:='*.xls';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveDialog.FileName:='ExcelFileName';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CopyTOClibrd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp&nbsp;:=&nbsp;createoleobject('Excel.Application');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.visible&nbsp;:=&nbsp;True;&nbsp;//显示打开excel<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExcelApp.WorkBooks.Add;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExcelApp.Range['A1:J'+inttostr(listview.count+1)].Select;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExcelApp.Selection.NumberFormatLocal&nbsp;:=&nbsp;'@'&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置excel的cell格式为文件格式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.Range['A1'].PasteSpecial;&nbsp;//粘贴剪贴板中的内容到excel中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里你就要自己处理了,可以在excel中录制宏,看vb代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExcelApp.Selection.HorizontalAlignment&nbsp;:=&nbsp;alBottom;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.Selection.ColumnWidth&nbsp;:=&nbsp;18;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.Rows['1:1'].Select;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.Selection.Font.bold&nbsp;:=&nbsp;True;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;SaveDialog.Execute&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.ActiveWorkBook.SaveAs(saveDialog.FileName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;excelApp.activeworkbook.saved&nbsp;:=&nbsp;true;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//异常显示<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;SaveDialog.Free;<br>&nbsp;&nbsp;&nbsp;&nbsp;excelApp.ActiveWorkBook.close;&nbsp;//如果要不关掉excel的话<br>&nbsp;&nbsp;&nbsp;&nbsp;excelApp.quit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这两行就注释掉<br>&nbsp;&nbsp;&nbsp;&nbsp;clipboard.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;clipboard.Close;<br>&nbsp;&nbsp;end;<br>end;<br><br>随便写的代码可能有问题&nbsp;,自己修改一下
 
若问题还未解决可加我<br>qq:292044357
 
问题基本解决了,顺便问下,如何设置Excel单元格的背景颜色和边框的颜色。谢谢!<br>明天散分,非常感谢!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部