delphi 几个DataSet数据导出到XML Word Excel TXT HTML的函数

interface  

  

uses DB;  

  

procedure ExpHTML(DataSet: TDataSet; const AFilePath: string);  

procedure ExpTXT(DataSet: TDataSet; const AFilePath: string);  

procedure ExpXLS(DataSet: TDataSet; const AFilePath: string);  

procedure ExpDOC(DataSet: TDataSet; const AFilePath: string);  

procedure ExpXML(DataSet: TDataSet; const AFilePath: string);  

  

implementation  

  

uses  

  dbWeb, Classes, ComObj, XMLDoc, XMLIntf, Variants;  

 

procedure ExpXML(DataSet : TDataSet; const AFilePath: string);  

var  

  i: integer;  

  xml: TXMLDocument;  

  reg, campo: IXMLNode;  

begin  

  xml := TXMLDocument.Create(nil);  

  try  

    xml.Active := True;  

    DataSet.First;  

    xml.DocumentElement :=  

      xml.CreateElement('DataSet','');  

    DataSet.First;  

    while not DataSet.Eof do  

    begin  

      reg := xml.DocumentElement.AddChild('row');  

      for i := 0 to DataSet.Fields.Count - 1 do  

      begin  

        campo := reg.AddChild(  

          DataSet.Fields[i].DisplayLabel);  

        campo.Text := DataSet.Fields[i].DisplayText;  

      end;  

      DataSet.Next;  

    end;  

    xml.SaveToFile(AFilePath);  

  finally  

    xml.free;  

  end;  

end;  

 

procedure ExpDOC(DataSet: TDataSet; const AFilePath: string);  

var  

  WordApp,WordDoc,WordTable,WordRange: Variant;  

  Row,Column: integer;  

begin  

  WordApp := CreateOleobject('Word.basic');  

  WordApp.Appshow;  

  WordDoc := CreateOleobject('Word.Document');  

  WordRange := WordDoc.Range;  

  WordTable := WordDoc.tables.Add(  

    WordDoc.Range,1,DataSet.FieldCount);  

  for Column:=0 to DataSet.FieldCount-1 do  

    WordTable.cell(1,Column+1).range.text:=  

      DataSet.Fields.Fields[Column].FieldName;  

  Row := 2;  

  DataSet.First;  

  while not DataSet.Eof do  

  begin  

     WordTable.Rows.Add;  

     for Column:=0 to DataSet.FieldCount-1 do  

       WordTable.cell(Row,Column+1).range.text :=  

         DataSet.Fields.Fields[Column].DisplayText;  

     DataSet.next;  

     Row := Row+1;  

  end;  

  WordDoc.SaveAs(AFilePath);  

  WordDoc := unAssigned;  

end;  

 

//导出到Excel  

 

procedure ExpXLS(DataSet: TDataSet; const AFilePath: string);  

var  

  ExcApp: OleVariant;  

  i,l: integer;  

begin  

  ExcApp := CreateOleObject('Excel.Application');  

  ExcApp.Visible := True;  

  ExcApp.WorkBooks.Add;  

  DataSet.First;  

  l := 1;    

  DataSet.First;  

  while not DataSet.EOF do  

  begin  

    for i := 0 to DataSet.Fields.Count - 1 do  

      ExcApp.WorkBooks[1].Sheets[1].Cells[l,i + 1] :=  

        DataSet.Fields[i].DisplayText;  

    DataSet.Next;  

    l := l + 1;  

  end;  

  ExcApp.WorkBooks[1].SaveAs(AFilePath);  

end;  

 

procedure ExpTXT(DataSet: TDataSet; const AFilePath: string);  

var  

  i: integer;  

  sl: TStringList;  

  st: string;  

begin  

  DataSet.First;  

  sl := TStringList.Create;  

  try  

    st := '';  

    for i := 0 to DataSet.Fields.Count - 1 do  

      st := st + DataSet.Fields[i].DisplayLabel + ';';  

    sl.Add(st);  

    DataSet.First;  

    while not DataSet.Eof do  

    begin  

      st := '';  

      for i := 0 to DataSet.Fields.Count - 1 do  

        st := st + DataSet.Fields[i].DisplayText + ';';  

      sl.Add(st);  

      DataSet.Next;  

    end;  

    sl.SaveToFile(AFilePath);  

  finally  

    sl.free;  

  end;  

end;  

 

   

 

procedure ExpHTML(DataSet: TDataSet; const AFilePath: string);  

var  

  sl: TStringList;  

  dp: TDataSetTableProducer;  

begin  

  sl := TStringList.Create;  

  try  

    dp := TDataSetTableProducer.Create(nil);  

    try  

      DataSet.First;  

      dp.DataSet := DataSet;  

      dp.TableAttributes.Border := 1;  

      sl.Text := dp.Content;  

      sl.SaveToFile(AFilePath);  

    finally  

      dp.free;  

    end;  

  finally  

    sl.free;  

  end;  

end;  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值