其实也可以不用关闭Excel的;

解决方案 »

  1.   

    我在vb中也遇到这中情况
    但是我用excelid.quit是可以关闭的
      

  2.   

    请各位大虾帮个忙,我真的要用。
    还有一个问题
    当写下以下语句后
    Excelid.Cells[j+1,i+1]:='111111111111111111111111111111111111';
    EXCEL单元格中显示  1.11111111111111E+20
    我把列宽拉得再长也没用,而一般长度的只需拉长就可能恢复成数字我想能不能事先在将ExcelID当前单元设为“文本”型,而不是默认的“常规”值,请问语句该如何写?
      

  3.   

    第一个问题我已解了
      在EXCELID.QUIT
        后加一条 excelid:=Unassigned;
        就可以真正关闭EXCEL,下面那个问题请大家帮忙,真的很急。当写下以下语句后
    Excelid.Cells[j+1,i+1]:='111111111111111111111111111111111111';
    EXCEL单元格中显示  1.11111111111111E+20
    我把列宽拉得再长也没用,而一般长度的只需拉长就可能恢复成数字我想能不能事先在将ExcelID当前单元设为“文本”型,而不是默认的“常规”值,请问语句该如何写?     
      

  4.   

    Excelid.Cells[j+1,i+1].numberformat:='@';
    好象加了这一句后转换速度会慢一些。
      

  5.   

    用这种方法,还是没有完全搞定。
    有的单元格行,有的单元格不行。
    我所要格式化的信息都是  14位的考号信息,还请大家帮忙。
    如有高手详细介绍一下用代码对EXCEL单元格格式进行操作的话,一定重分酬谢!!!!
      

  6.   

    最好全部用上。
        ExcelApplication1.Quit;
        ExcelWorksheet1.Disconnect;
        ExcelWorkbook1.Disconnect;
        ExcelApplication1.Disconnect;
      

  7.   

    to:SMALLFANGZI(官才)
    请问:用上述方法怎么不行,具体些,在我这里全部都没问题的。
      

  8.   

    我的程序如下,想把QUERY2的查询结果输出至EXCEL,
    procedure Tfstate_order.BitBtn2Click(Sender: TObject);
    VAR
      i,j:integer;
        ExcelID: Variant;
    begin
    //打开保存文件对话框
     savedialog1.Filter := 'EXCEL文件(*.xls)|*.xls|All files (*.*)|*.*';
     savedialog1.FilterIndex := 1; { start the dialog showing all files }
     savedialog1.Execute;//建立excel对象
    try
      ExcelID := CreateOleObject( 'Excel.Application' );
    EXCEPT
      showmessage('你的机子上没有安装EXCEL,无法使用该功能,'+#13+'         请先安装EXCEL!');
      exit;
    END;  ExcelID.Visible := True;
      ExcelID.Caption := '应用程序调用 Microsoft Excel';
      //增加工作表
      ExcelID.WorkBooks.Add;
    //更改标题
      query2.first;
      for i:=0 to query2.RecordCount-1  do //控制行
      begin
        for j:=0 to query2.FieldCount-1  do  //控制列
        begin
          try
           if j=1 then  {//第二个字段名为考生号,字符型的CHAR(14),由数字字符串组成,如‘01652909151001’}
           begin
           Excelid.Cells[j+1,i+1].numberformat:='@';
           Excelid.Cells[i+1,j+1]:=query2.Fields[j].asstring;
           end
           else
           begin //其余字段常规显示
           Excelid.Cells[i+1,j+1]:=query2.Fields[j].asstring;
           end;
          except
           showmessage('数据导出期间请不要动EXCEL');
          end;
        end;
        query2.Next;
      end;
    //写入内容
      excelid.activeworkbook.saveas(savedialog1.FileName);
      excelid.workbooks.close;
    //保存文件
      excelid.quit;
      excelid:=unassigned;
    //  excelid.disconnect;
    end;输出的结果会出现这些情况:
      
      01350502150742
      01350502122345
      1.3538E+12
      1.3528E+12
      1.35048E+12  
      01350502150742
    有的单元格的 前面的0被截掉,搞不懂为什么