我找的EXL导出程序,导出成功了,不过还是执行了EXPECT后面的语句
//EXL导出过程
procedure Tfrm_ksjj.Excel_lv(lvpt:tlistview);
var XL,SHEET:variant;
SfileName:string;
j,i:integer;
BEGIN
try
if not savedialog1.Execute then exit;
sfilename:=savedialog1.FileName ;
//创建一个EXCEL
XL:=CreateOleObject('Excel.Application');
XL.WorkBooks.add;
//设SHEETS1为活动页
SHEET:=XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1];
//设置列宽,这个可以根据实际情况修改
XL.rANGE['A1','A1'].cOLUMNwIDTH:=10;
XL.rANGE['B1','B1'].cOLUMNwIDTH:=10;
XL.rANGE['C1','C1'].cOLUMNwIDTH:=10;
XL.rANGE['D1','D1'].cOLUMNwIDTH:=10;
XL.rANGE['E1','E1'].cOLUMNwIDTH:=10;
XL.rANGE['F1','F1'].cOLUMNwIDTH:=10;
XL.rANGE['G1','G1'].cOLUMNwIDTH:=10;
XL.rANGE['H1','H1'].cOLUMNwIDTH:=10;
XL.rANGE['I1','I1'].cOLUMNwIDTH:=10;
XL.rANGE['J1','J1'].cOLUMNwIDTH:=10;
XL.rANGE['K1','K1'].cOLUMNwIDTH:=10;
XL.rANGE['L1','L1'].cOLUMNwIDTH:=10;
//第一行,将LISTVIEW的标题先导出到EXCEL
for i:=1 to lvpt.Columns.Count do
sheet.cells[1,i]:=lvpt.Columns[i-1].Caption ;
//将LISTVEW里各行列的内容导出
for j:=0 to lvgr.Items.Count -1 do
for i:=1 to lvgr.Columns.Count do
begin //由于将数字字符串如00011导出到EXCEL时,它会自动转成数值11,
//所以要在前面加'号,定义为字符串.
if i=1 then sheet.cells[j+2,i]:=''+lvpt.Items[j].Caption
else sheet.cells[j+2,i]:=''+lvpt.Items[j].SubItems [i-2];
end;
//写入EXCEL文件
XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
XL.Quit;
except
messagebox(handle,'对不起,您可能没有安装Excel或文件目录错误!','错误',MB_OK+MB_ICONSTOP);
XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
XL.Quit;
end;
end;
//执行EXL导出
procedure Tfrm_ksjj.BitBtn1Click(Sender: TObject);
begin
excel_lv(lvgr);
end;
我找的EXL导出程序,EXL成功导出了,不过还是执行了EXPECT后面的语句提示“对不起,您可能没有安装Excel或文件目录错误!”…… 这是为啥米呢
[解决办法]
修改成如下,看下报什么错。
//EXL絳堤徹最
procedure Tfrm_ksjj.Excel_lv(lvpt:tlistview);
var XL,SHEET:variant;
SfileName:string;
j,i:integer;
begin
if not savedialog1.Execute then exit;
sfilename:=savedialog1.FileName ;
//斐膘珨跺EXCEL
try
XL:=CreateOleObject('Excel.Application');
except
messagebox(handle,'勤祥?ㄛ蠟褫夔羶衄假蚾Excel麼恅璃醴翹渣昫!','渣昫',MB_OK+MB_ICONSTOP);
exit;
end;
try
XL.WorkBooks.add;
//扢SHEETS1峈魂雄珜
SHEET:=XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1];
//扢离蹈遵,涴跺褫眕跦擂妗暱?錶党蜊
XL.rANGE['A1','A1'].cOLUMNwIDTH:=10;
XL.rANGE['B1','B1'].cOLUMNwIDTH:=10;
XL.rANGE['C1','C1'].cOLUMNwIDTH:=10;
XL.rANGE['D1','D1'].cOLUMNwIDTH:=10;
XL.rANGE['E1','E1'].cOLUMNwIDTH:=10;
XL.rANGE['F1','F1'].cOLUMNwIDTH:=10;
XL.rANGE['G1','G1'].cOLUMNwIDTH:=10;
XL.rANGE['H1','H1'].cOLUMNwIDTH:=10;
XL.rANGE['I1','I1'].cOLUMNwIDTH:=10;
XL.rANGE['J1','J1'].cOLUMNwIDTH:=10;
XL.rANGE['K1','K1'].cOLUMNwIDTH:=10;
XL.rANGE['L1','L1'].cOLUMNwIDTH:=10;
//菴珨俴,蔚LISTVIEW腔梓枙珂絳堤善EXCEL
for i:=1 to lvpt.Columns.Count do
sheet.cells[1,i]:=lvpt.Columns[i-1].Caption ;
//蔚LISTVEW爵跪俴蹈腔囀?絳堤
for j:=0 to lvgr.Items.Count -1 do
for i:=1 to lvgr.Columns.Count do
begin //蚕衾蔚杅趼趼睫揹?00011絳堤善EXCEL奀,坳頗赻雄蛌傖杅硉11,
//垀眕猁婓?醱樓'瘍,隅砱峈趼睫揹.
if i=1 then sheet.cells[j+2,i]:=''+lvpt.Items[j].Caption
else sheet.cells[j+2,i]:=''+lvpt.Items[j].SubItems [i-2];
end;
//迡?EXCEL恅璃
XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
XL.Quit;
except on e: exception do
begin
messagebox(handle, e.message,'渣昫',MB_OK+MB_ICONSTOP);
XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
XL.Quit;
end;
end;
end;