procedure TForm1.Button2Click(Sender: TObject);
var
  I,J : integer;
  TxtFile : TextFile;
  TmpString : String;
begin
  try
    if VarIsEmpty(XlsApp) then
      XlsApp := CreateOleObject('Excel.Application');
    XlsSheet := XlsApp.workbooks.open('c:\my documents\book3.xls');    AssignFile(TxtFile,'C:\My Documents\Test.txt');
    Rewrite(TxtFile);
    try
      for I := 3 to 21 do
      begin
        TmpString := '';
        for J := 1 to 5 do
        begin
          TmpString := TmpString + XlsSheet.ActiveSheet.Cells[I,J].Text + '|';
        end;
        Writeln(TxtFile,Tmpstring);
      end;
    finally
      CloseFile(TxtFile);
    end;
    XlsApp.Visible := true;
  except
    XlsSheet.close;
    XlsApp.Application.quit;
    XlsApp := Unassigned;
    XlsSheet := Unassigned;
  end;
end;

解决方案 »

  1.   

    先用TABLE打开excel,用以下程序转换为文本:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
      s: string;
      memo1:TStrings;
    begin
      memo1:=TStringList.Create;
      memo1.Clear;
      with Table1 do
      begin
        s:='';
        for i := 0 to Table1.FieldCount - 1 do
          s := s + Table1.Fields[i].FieldName + #9;
        memo1.Append(s);
        while Not Eof do
        begin
          s:='';
          for I := 0 to Table1.FieldCount - 1 do
          begin
            s:=s+ Trim(table1.Fields[i].AsString) + #9;
          end;
          memo1.Append(s);
          Next;
        end;
      end;
      memo1.SaveToFile('c:\test.txt');
      memo1.Free;
    end;生成txt文件:
    procedure TForm10.okBtnClick(Sender: TObject);
    var
      AppPath,textname,s:string;
      mytextfile:textfile;
    begin
      tbname:=tnedit.Text;
      if pdCBox.Text='年报' then
      begin
        bspd:='360';
      end
      else if pdCBox.Text='季报' then
      begin
        bspd:='120';
      end
      else if pdCBox.Text='月报' then
      begin
        bspd:='30';
      end
      else if pdCBox.Text='周报' then
      begin
        bspd:='7';
      end;
    //  bspd:=pdCBox.Text;
      statbs:=frdm.Text;
      endbs:=qydm.Text;
      AppPath:=ExtractFileDir(Application.ExeName);
      textname:=AppPath+'\bsdata\'+tbname+'.txt';
      assignfile(mytextfile,textname);
      rewrite(mytextfile);
      try
        s:=bspd;
        writeln(mytextfile,s);
        s:=statbs;
        writeln(mytextfile,s);
        s:=endbs;
        writeln(mytextfile,s);
      finally
        closefile(mytextfile);
      end;
      unit5.ctableYN:=true;
      close();
    end;
    删除deletefile('df.txt');
      

  2.   

    var
     i,j:integer;
     MSExcel:Variant;
    begin
    //在此加上代码;
     MSExcel:=createOLEObject('excel.application');
     MsExcel.workBooks.add;
     Msexcel.visible:=false;
      with Dataset do begin
     //转出表头
     for i:=0 to FieldCount-1 do
     begin Msexcel.cells[1,i+1].value:=Fields[i].fieldname; end;
     //转出内容
     j:=2;//表头为1,内容为第二行
     while not eof do
     begin
      for i:=0 to fieldcount-1 do
      begin
      MSexcel.cells[j,i+1].numberformat:='@';
      MsExcel.cells[j,i+1].value:=fields[i].asstring;
      end;
      inc(j);
      
      next;
     end;
     end;//end of dataset;
     MSExcel.ActiveWorkBook.SaveAs(FileName);
     MSExcel.ActiveWorkBook.Saved:=True;
     MSExcel.Quit;
    end;
      

  3.   

    另外怎样在程序里动态地删除一个.txt文件?