你打算采用什么方式进行处理?你的最终要求是什么?是用数据库处理的方式,还是打算用excel的方式,二者各有限制条件数据库方式可以采用ado连接,使用gettablename获得各个sheet的名称,但是当某一列的数据类型不一致时,会丢失部分数据execl ole方式要求你的客户段必需有excel 97以上存在

解决方案 »

  1.   

    我用的是SERVERS中的EXCEL组件,现在能得到文件中的SHEETS了,关建是如何将其中的SHEET一个个的连继打印出来,并合成一个SHEET工作簿!
    谢谢谢谢谢谢你啊!给我代码好吗?:)
      

  2.   

    哦,你稍等一下,我正在写,不过我直接创建ole对象,没有用组建
    写完我给你贴出来
      

  3.   

    你是要并合成一个SHEET工作簿再打印还是要分别打印然后再合并?
      

  4.   

    unit Unit2;interface
    uses
      classes, comctrls, stdctrls, windows, dialogs, controls, sysutils,
      db,forms,dbclient,comobj;function OpenExcelAndPrintOut(
                 excelfilename:string='';              //excel文件名
                 visible:boolean=False): boolean;      //是否可视implementationfunction OpenExcelAndPrintOut(excelfilename:string='';visible:boolean=False): boolean;
    var
       excelobj, excel, workbook, sheet,sheetTemp,sheetcell: olevariant;
       opendialog:tsavedialog;
       i,sheetPages:integer;
    begin
       result := false;
       //指定打开打开文件
       if excelfilename='' then begin
          opendialog:=tsavedialog.create(nil);
          opendialog.filter := 'microsoft excel 文件|*.xls';
          if opendialog.execute then
             excelfilename:=opendialog.FileName
          else exit;
       end;
       //创建excel ole对象,并判断计算机内是否存在excel
       try
          excelobj := createoleobject('excel.sheet');
          excel := excelobj.application;
          excel.visible := visible ;
          workbook := excel.workbooks.open(excelfilename) ;
       except
          messagebox(getactivewindow,'无法调用mircorsoft excel! '+chr(13)+chr(10)+
                        '请检查是否安装了mircorsoft excel。','提示',mb_ok+mb_iconinformation);
          exit;
       end;
       sheetPages :=workbook.sheets.Count;
       sheetTemp:=workbook.sheets.add ;   //加入一个sheet
       //将各个页粘贴到sheetTemp中
       for i:=1 to sheetPages do begin
           sheet:= workbook.sheets[i];
           sheetcell:=sheet.Cells.SpecialCells(11);
           if (sheetcell.row<>1) or (sheetcell.Column=1) then begin
              sheet.Range(sheet.Cells(1, 1), sheetcell).Copy;
              sheetTemp.Cells(sheetcell.Row + 1, 1).PasteSpecial;
           end;   end;
       sheetTemp.select;
       sheetTemp.print;
       workbook.save;
       result:=True;
       //其他清除变量语句
       //....
       //....
    end;end................................
    匆忙间写的,初试了一下,主要功能具备
      

  5.   

    谢谢你啊, fredfei(飞飞) 真的,我试用一下啊!
      

  6.   

    我用了一下,不行啊,我用的是SERVERS中的控件啊!我要先各个打印后合并!谢谢你啊