千古简单题,但是就搞不懂:Excel只能建3个WorkSheet?(20分)

  • 主题发起人 主题发起人 gyluwoo
  • 开始时间 开始时间
G

gyluwoo

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Delphi中用Excel创建WorkSheet的时候,为什么在建到第四个的时候系统报错说无效索引值?
程序停在这句话上: ExcelApp.WorkSheets[4].name:='文档';

怎么可以建4个以及4个以上的Sheet?
 
可以建立 255个工作薄[:)]
 
默认3个吧 要新增后才能引用
 
如何新增?
我用ExcelApp.WorkBooks.Add;这句话还是不行,难道就没有人知道么?
 
eclapp.worksheets.add;
eclapp.worksheets[1].activate;
eclapp.worksheets[1].name:=listbox1.Items;
 
楼上的,当你这样做的时候:
eclapp.worksheets.add;
eclapp.worksheets[1].activate;
eclapp.worksheets[1].name:=listbox1.Items;

eclapp.worksheets[2].activate;
eclapp.worksheets[2].name:=listbox1.Items;

eclapp.worksheets[3].activate;
eclapp.worksheets[3].name:=listbox1.Items;

都没有问题,可是当你:
eclapp.worksheets[4].activate;
eclapp.worksheets[4].name:=listbox1.Items; 就出错,说无效索引
 
来自:gyluwoo, 时间:2006-12-3 13:21:49, ID:3638033
楼上的,当你这样做的时候:
eclapp.worksheets.add;
eclapp.worksheets[1].activate;
eclapp.worksheets[1].name:=listbox1.Items;

eclapp.worksheets[2].activate;
eclapp.worksheets[2].name:=listbox1.Items;

eclapp.worksheets[3].activate;
eclapp.worksheets[3].name:=listbox1.Items;

都没有问题,可是当你:
eclapp.worksheets[4].activate;
eclapp.worksheets[4].name:=listbox1.Items; 就出错,说无效索引
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
是这样的,EXCEL打开后,默认创建了3个工作表
而你只使用一条eclapp.worksheets.add;
所以现在你已经有4个工作表了
而你使用eclapp.worksheets[4].activate;是企图访问第4+1个工作表
由于第5个工作表不存在,所以一定出错了
应该是准备创建N个工作表就要用N条ADD
而新创建的表用eclapp.worksheets[1].activate;
来激活就可以了
 
楼上的,还是不行啊!我想让一个Excel中有四个WorkSheet,你就直接说怎么写代码吧!
我是这样写的:
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].name := 'name1;
ExcelApp.WorkSheets[1].Activate;
......

ExcelApp.WorkSheets[2].name := 'name2';
ExcelApp.WorkSheets[2].Activate;
......

ExcelApp.WorkSheets[3].name := 'name3';
ExcelApp.WorkSheets[3].Activate;
......
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[4].name := 'name4'; >>>>>程序运行到这里报错
ExcelApp.WorkSheets[4].Activate;
 
第一个的标值不是为 0 么???
 
从0开始的
 
//驱动Excel2000
try
ExcelApplication1:= TExcelApplication.Create(Application); //创建一个Excel应用程序
ExcelApplication1.Connect; //连接到应用程序
ExcelApplication1.DisplayAlerts[0] := True; //是否显示 警报信息,如闪动状态栏,删除确认等
ExcelApplication1.Visible[0] := False; //是否显示Excel应用程序界面
except
Application.Messagebox('Excel2000 没有安装!'+chr(13)+'本系统需要Excel处理数据'+chr(13)+'系统将退出','重要信息', MB_ICONERROR + mb_Ok);
close;
abort;
end;

//写表格文件(生成成绩单)
try
sheetshu:= ExcelApplication1.SheetsInNewWorkbook[1]; //记录Excel中的sheet的默认个数
ExcelApplication1.SheetsInNewWorkbook[1]:=banjishu; //修改为默认sheet的个数为班级的个数
ExcelWorkBook1 := ExcelApplication1.Workbooks.Add(EmptyParam, 0); //加入一个工作薄,此时工作薄里会有banjishu个sheet
//以班级命名各工作表
for I:=1 to ExcelApplication1.Sheets.Count do
begin
ExcelWorksheet1 := ExcelApplication1.Sheets.Item as _Worksheet; //选中sheet
ExcelWorkSheet1.Name := IntToStr(banjixuhao[i-1])+'班'; //重命名sheet的名字
end;
……
finally
ExcelApplication1.SheetsInNewWorkbook[1]:=sheetshu;
ExcelApplication1.Disconnect ;
ExcelApplication1.Quit ;
end;
 
不是从0开始的呀!我试过了
 
我试过了,好像不是从0开始的
 
是这样的,EXCEL打开后,默认创建了3个工作表
你要手工追加工作表的,不然当然出错
ExcelApp.WorkBooks.Add; -----是追加工作簿
WorkSheet....(具体记不清了) -----是追加工作表
 
结果出来了,在excelApp.works.add 后面添加 excelapp.worksheet.add 就可以了
 

Similar threads

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