procedure TForm1.Button5Click(Sender: TObject);
var
  SomeFiled :String;
begin
  Query4.close;
  Query4.SQL.clear;
  Query4.Sql.Text := 'select * from fb_xskh_linkrecord';
  Query4.Open;
  Query4.First;
  while not Query4.Eof do
    SomeFiled :=Query4.FieldByName('content').AsString; 
    Query4.Next;
end;
如何把SomeFiled里的内容以Excel格式保存?

解决方案 »

  1.   

    这样保存成Excel有点难度
    如果你把数据放在
    DBGrid里 然后再保存成Excel就比较简单了
      

  2.   

    先保存到DBGrid里我试过啦,DBGrid自带有个保存功能啊。
    但Query里的数据,有部份字段是MEMO格式,在DBGrid里显示不出来,保存后看到里面的内容,你有其它办法处理到吗?现在只有用这种方法来处理,但就不会导出
      

  3.   

    如果使用数据显示控件,一般都提供此功能。
    想直接从query输出到excel,可以自己写,保存csv或xlshttp://topic.csdn.net/t/20011018/10/328275.html
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
          eclApp,WorkBook:Variant;//声明为OLE   Automation   对象
          xlsFileName:string;
          i,j,n:integer;
      begin
          if   SaveDialog1.Execute   then
          begin
          xlsFileName:=SaveDialog1.FileName;
          if   fileexists(SaveDialog1.FileName)   then   DeleteFile(SaveDialog1.FileName);
          try
              //创建OLE对象Excel   Application与   WorkBook
              eclApp:=CreateOleObject('Excel.Application');
              WorkBook:=CreateOleobject('Excel.Sheet');
          except
              ShowMessage('您的机器里未安装Microsoft   Excel。');
              Exit;
          end;
          try          Screen.Cursor:=crHourGlass;   
              workBook:=eclApp.workBooks.Add;
              i:=1;   //EXECL表行号   
              n:=0;//query字段N序号   
              ADOQuery1.First;
              j:=1;   
              for   n:=0   to   ADOQuery1.FieldCount   -1   do
                      begin   
                          eclApp.Cells(i,j):=ADOQuery1.fields[n].DisplayLabel;
                          j:=j+1;   
                      end;
                    i:=2;   //EXECL表行号   
                    n:=0;//query字段N序号   
              while   not   ADOQuery1.Eof   do   begin
                          j:=1;//EXECL表列号   
                  for   n:=0   to   ADOQuery1.FieldCount   -1   do
                      begin   
                          eclApp.Cells(i,j):=ADOQuery1.fields[n].AsString;
                          j:=j+1;   
                      end;   
                  ADOQuery1.Next;
                  i:=i+1;   
                  end;             WorkBook.SaveAs(xlsFileName);
              Application.MessageBox('操作在没有警告的情况下正常结束!','完成',mb_ok+mb_iconinformation);
              WorkBook.close;   
              eclApp.Quit;//退出Excel   Application   
              eclApp:=Unassigned;//释放VARIANT变量   
              Screen.Cursor:=crdefault;   
          except   
              ShowMessage('不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。');   
              WorkBook.close;   
              eclApp.Quit;
              //释放VARIANT变量   
              eclApp:=Unassigned;
          end;   
      END;end;
      

  5.   

    eclApp :=CreateOleObject('Excel.Application');
    去到这句的时候出错
    [Error] Unit1.pas(238): Undeclared identifier: 'CreateOleObject'
      

  6.   

    eclApp :=CreateOleObject('Excel.Application'); 
    去到这句话当然会出错
    这是创建一个对象
      

  7.   

    uses ComObj;
    加上ComObj的引用
      

  8.   

    没有引用单元吧。ComObj
    //从DBGrid导出Excel
    procedure TData1.CopyDbDataToExcel(Target: TDBGrid;mb,FileName: string);
    var
      iCount, jCount: Integer;
      XLApp: Variant;
      Sheet: Variant;
    begin
      Screen.Cursor := crHourGlass;
      if not VarIsEmpty(XLApp) then
      begin
         XLApp.DisplayAlerts := False;
         XLApp.Quit;
         VarClear(XLApp);
       end;
       //通过ole创建Excel对象
       try
         XLApp := CreateOleObject('Excel.Application');
       except
         application.messagebox('您的系统没有安装Excel,请安装后再使用本功能!','读取文件失败',mb_iconerror+mb_ok);
         Screen.Cursor := crDefault;
         Exit;
       end;
       XLApp.WorkBooks.Add;
       XLApp.WorkBooks[1].WorkSheets[1].Name := mb;
       Sheet := XLApp.Workbooks[1].WorkSheets[mb];
       if not Target.DataSource.DataSet.Active then
       begin
         Screen.Cursor := crDefault;
         Exit;
       end;
       Target.DataSource.DataSet.first;
       jCount := 1;
       while not Target.DataSource.DataSet.Eof do
       begin
         for iCount := 0 to Target.Columns.Count - 1 do   //
         begin
            Sheet.cells[jCount,iCount+1] := trim(Target.Columns.Items[iCount].Field.AsString);
         end;
         Inc(jCount);
         Target.DataSource.DataSet.Next;
       end;
       //--------------------可以在此添加Excel的宏-----------
       XLApp.ActiveWorkbook.SaveAs(FileName:=FileName);
       Screen.Cursor := crDefault;
       XLApp.ActiveWorkbook.Close;
    end;
      

  9.   

    现在又提示
    [Hint] Unit1.pas(257): Value assigned to 'n' never used
    ???