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;  

相关阅读 >>

Delphi idhttp 获取链接连通状态

Delphi 点击关闭叉时,最小化图标

一些最基本的函数 单元

Delphi 字符串保存为 txt文件

Delphi 字符串插入与删除

Delphi 防止程序重复执行的单元

Delphi 查找目录下文件(多文件查找)

Delphi一个基于wininet的http操作小函数

Delphi创建密钥文件

Delphi 打开android应用信息

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...