国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

利用剪貼板實現(xiàn)高速導出數(shù)據(jù)到Excel

2019-11-18 18:40:36
字體:
來源:轉載
供稿:網(wǎng)友
 在很多的時候,我們需要將我們的數(shù)據(jù)導出到Excel中進行加工,在access中有現(xiàn)成的工具可以實現(xiàn)
可是在Delphi中卻偏偏沒有,無論如何我們需要這么一個工具,那么,事不宜遲,細細一想,最好的方法莫過
于直接在程序中按照Excel的格式生成Excel文件,使用Ole技術直接調用Excel實例,由于第一種方法技術實現(xiàn)
過于復雜,好在一般的計算機上已經(jīng)安裝了Office,在此就第二種方法“拋一塊磚”。
    在此做一個示例以方便說明,我們考慮到導出數(shù)據(jù)有很多的情況是Master/Detail數(shù)據(jù),因此就用兩個
TQuery和一個TDataSource,如果有更多的層次,只需要增加TQuery和TDataSource即可,以下使用了兩個TQuery
,分別是:qryMaster和qryDetail,一個TDataSource:dsSource;
    步驟是:
                1.建立一個Excel實例
                2.創(chuàng)建一個工作表
                3.創(chuàng)建一個TStringList,用來裝數(shù)據(jù)
                4.窮舉數(shù)據(jù)表,將數(shù)據(jù)存入TStringList
                5.將TStringList的數(shù)據(jù)復制到剪貼板
                6.把剪貼板中的數(shù)據(jù)粘貼到Excel
     本方法的優(yōu)點在于:比逐條寫入到Excel中的速度大大提高,我曾試過,在P3933,256M的機器上用普通
的方法,導出1000條數(shù)據(jù)大約需要2分鐘,而該用本方法后只需要8秒。

function ToExcel():boolean;
var
    y       :integer;
    tsList  :TStringList;
    s       :string;
    aSheet  :Variant;
begin
    result:=true;
    Excel.Connect;                  // 打開Excel
    Excel.Visible[0]:=true;         // 顯示Excel
    Excel.Workbooks.Add(xlWBATWorksheet,0);
    aSheet:=excel.Worksheets.Item[1];

    tsList:=TStringList.Create;
    try
        try
            with qryMaster do
            begin
                Open;
                First;
                While Not Eof do
                begin
                    s:='';
                    for y:=0 to FieldCount-1 do
                    begin
                        s:=s+Fields[y].AsString+#9;
                        application.PRocessMessages;
                    end;
                    tsList.Add(s);
                    // 從表
                    if qryDetail<>nil then
                    begin
                        with qryDetail do
                        begin
                            Open;
                            First;
                            while Not Eof do
                            begin
                                s:='';
                                for y:=0 to FieldCount-1 do
                                begin
                                    s:=s+Fields[y].AsString+#9;
                                    Application.ProcessMessages;
                                end;
                                tsList.Add(s);
                                next;
                            end;
                        end;
                    end;
                    next;
                end;
                Close;
            end;
            Clipboard.AsText:=tsList.Text;
        except
            result:=false;
        end;
    finally
        tsList.Free;
    end;

    Excel.Disconnect;
    aSheet.Paste;
    MessageBox(Application.Handle,'數(shù)據(jù)導出完畢!','系統(tǒng)提示',MB_ICONINFORMATION or MB_OK);
end;

作者相關作品:
       ◢█████◤
      ◢◤   ◢◤
◣    ◢◤ 凌 ◢◤
█◣  ◢◤   ◢◤
█◥◣◢◤ 麗 ◢◤
█ ◥◤   ◢◤
█   軟 ◢◤ http://wosens.com
█    ◢◤
█ 件 ◢◤  ◥█████
█  ◢◤    ◥◣  █
███◤      ◥███

======== 小燕子娛樂系列 ========
《小燕子信使》
《小燕子字符畫》
《小燕子方塊》

======== 程序員工具箱系列 ========
《內存清潔機》
《酷查詢:CoolQuery》
《口令王:PassWordKing》
《凌麗郵件群發(fā)》
《SQL 數(shù)據(jù)庫生成器》
《網(wǎng)頁攪拌機》
《WinRoute日志分析》
《日記隨手寫》

======== 無敵商務系列 ========
《無敵信使群發(fā)》
《無敵圖像印章》


上一篇:如何取得系統(tǒng)中的桌面的路徑

下一篇:如何用Tprinter設計BCB操作數(shù)據(jù)庫程序中的報表

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 海原县| 房山区| 澎湖县| 常熟市| 合川市| 贵港市| 五莲县| 饶平县| 高州市| 牙克石市| 闻喜县| 新干县| 会同县| 苏州市| 平谷区| 甘泉县| 江阴市| 武陟县| 平湖市| 英吉沙县| 宁城县| 崇文区| 镇赉县| 云南省| 启东市| 姚安县| 滕州市| 海原县| 高清| 海门市| 青阳县| 武陟县| 武城县| 高州市| 夏津县| 论坛| 海盐县| 民乐县| 略阳县| 通州区| 泰兴市|