怎樣從ADO Query中的資料匯出到HTML?

來源:互聯網
上載者:User
首先建立一個FORM在上面放一個Tedit (name:edit1)、TWebBrowser (name: WebBrowser1)、TMemo (name: Memo1)、TButton (name: Button1)代碼如下:procedure TForm1.FormCreate(Sender: TObject);
var ConStr: widestring;
begin
ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
          'Data Source=C:!gajbaAboutaboutdelphi.mdb;'+
          'Persist Security Info=False';

DBGrid1.DataSource := DataSource1;
DataSource1.DataSet := ADOQuery1;
ADOQuery1.Connection := ADOConnection1;
ADOConnection1.ConnectionString := ConStr;
ADOConnection1.LoginPrompt:=False;

Edit1.Text:='SELECT * FROM [tablename]';
Memo1.Text:='';
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  shtml     : widestring;
  htmlfile  : TextFile;
  i         : integer;
  AvailableFields: set of  TFieldType;
begin
AvailableFields:=[ftWideString, ftDate,  ftFloat];
//open query
ADOQuery1.SQL.Text:=Edit1.Text;
ADOQuery1.Open;

// --> create a html page

//html header
  shtml:= '<html> <head> <title>';
  shtml:= shtml + Edit1.Text;
  shtml:= shtml + '</title></head>' + #13#10;
  shtml:= shtml + '<body>' + #13#10;
  shtml:= shtml + 'Table created from query: '
          + Edit1.Text + '' + #13#10;

//table header
  shtml:= shtml + '<table border="1" width="100%">' + #13#10;
  shtml:= shtml + '<tr>' + #13#10;
  for i:=0 to AdoQuery1.FieldCount-1 do
  begin
    if ADOQuery1.Fields[i].DataType in AvailableFields  then
    begin
      shtml:= shtml + '<td>';
      shtml:= shtml + 
              '' + 
              ADOQuery1.Fields[i].DisplayName +
              '';
      shtml:= shtml + '</td>' + #13#10;
    end;
  end;...{for}
  shtml:= shtml + '</tr>' + #13#10;

//table body
  while not adoquery1.Eof do
  begin
    shtml:= shtml + '<tr>' + #13#10;
    for i:=0 to AdoQuery1.FieldCount-1 do
    begin
      if ADOQuery1.Fields[i].DataType in AvailableFields then
      begin
        shtml:= shtml + '<td>';
        shtml:= shtml + ADOQuery1.Fields[i].AsString;
        shtml:= shtml + '</td>' + #13#10;
      end;
    end;...{for}
    shtml:= shtml + '</tr>' + #13#10;
    ADOQuery1.Next;
  end;...{while}
  shtml:= shtml + '</table>' + #13#10;

  shtml:= shtml + '</body></html>';
// --> assign to memo
  Memo1.Text := shtml;

// --> save in a htm file
 AssignFile(htmlfile, 
            ChangeFileExt(
            Application.ExeName,'.htm'));
 Rewrite(htmlfile);
 WriteLn(htmlfile, shtml);
 CloseFile(htmlfile);


// --> browse to the file
 WebBrowser1.Navigate(ChangeFileExt(
     Application.ExeName,'.htm'));
 
end;...{Button1.OnClick}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.