关于操作Excel的问题(问题有些特殊)

Description of your first forum.

关于操作Excel的问题(问题有些特殊)

帖子ghy412 » 星期一, 2009年9月14日 09:13


操作Excel导入SQL时,程序提示:
---------------------------
Debugger Exception Notification
---------------------------
Project Data.exe raised exception class EOleException with message '类 Workbooks 的 Open 方法无效'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help  
---------------------------
后来经查证,是因为Excel的工作薄名称为乱码(正常的话是叫sheet1)造成的这个问题,求解决方法。(手工修改工作薄得名称是不现实的)
另外:我是用的office2007,打开Excel的语句如下:
        ExcelApp := CreateOleObject('Excel.Application');
        ExcelApp.DisplayAlerts := False;
        WorkBook := ExcelApp.WorkBooks.Open(FileName);//如果工作薄名称为乱码时,这里报错。
        ExcelApp.Visible := false;
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子szhcracker » 星期一, 2009年9月14日 09:27


为什么Sheet的名称为乱码呢?又为何手工修改工作薄的名称是不现实的,顶一个,关注。
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子de410 » 星期一, 2009年9月14日 10:02


应该和EXcel的版本有关吧?
换一个EXCEL 2003试一下~~
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子ghy412 » 星期一, 2009年9月14日 11:02


2003已经试过了 还是有问题
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子szhcracker » 星期一, 2009年9月14日 11:59


把你为乱码的工作薄名称发上来看看
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子ghy412 » 星期一, 2009年9月14日 12:53


NW...VW...
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子ghy412 » 星期一, 2009年9月14日 12:54


是一些不规则的乱码 这里好像没有办法发吧
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子sherlockye » 星期一, 2009年9月14日 15:55


如果乱码,你的FileName这个变量是如何取得值的呢?
在指定目录搜索出这个乱码文件名,应该也可以打开。

我用以下这段代码,搜索了指定目录'D:\tmp'下面的乱码excel文件(嬂%腶.xls)并打开,测试通过。不知道是不是lz所需要的东西
procedure TForm1.Button1Click(Sender: TObject);
var
  SSearchRec: TSearchRec;  //FSearchRec,
  StationResult: integer;  //FindResult,
  FPath,FName: string; //路径,短文件名
  ExcelApp,WorkBook: Variant;
begin
  //调试用路径
  FPath:='D:\tmp';

  StationResult:=findfirst(FPath+'\*.*',faDirectory,SSearchRec);  //搜索取得所有文件名
  ExcelApp := CreateOleObject('Excel.Application');
  while StationResult=0 do
  begin
    FName:=SSearchRec.Name;
    if RightStr (FName,4)<>'.xls' then     //如果不是excel文件,则继续寻找下一个
    begin
      StationResult:=FindNext(SSearchRec);
      continue;
    end;
    WorkBook := ExcelApp.WorkBooks.Open(FPath+'\'+FName);
    ExcelApp.Visible := True;
    StationResult:=FindNext(SSearchRec);
  end;
end;
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子szhcracker » 星期一, 2009年9月14日 17:30


楼上的没有理解楼主的问题,搂主的问题在于Excel中的Sheet名为乱码而不是Excel文件本身的文件名为乱码,比如:一般情况下Excel都默认有3个Sheet:Sheet1、Sheet2及Sheet3,而LZ的文件中有某个Sheet的名字有问题。
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子superong » 星期二, 2009年9月15日 09:09


感觉出现这种情况是跟你的文件有关系,你直接用手工打开是什么情况?
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子ghy412 » 星期二, 2009年9月15日 10:57


直接手工打开时可以的
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子GodIsWrong » 星期二, 2009年9月15日 11:49


一个一般需要有容错处理
在打开前先检查filename
如果有问题的话,最好先去修改
 
 
 

关于操作Excel的问题(问题有些特殊)

帖子zbdzjx » 星期二, 2009年9月15日 22:40


好象还有一种调用sheet的方法,一个是通过名字来调用,另一个是通过序号来调用的。

我们曾经做过一个功能,根据物料编号不同,导到不同的sheet中,这样,就要增加多个sheet,当时,用名字来判断,导出的效果不正确,后来用序号来调用,就可以了。