匯出Excel的方法及困惑

2021-07-30 11:51:11 字數 1284 閱讀 9189

我們在做專案時,難免要用到匯出功能。將資料匯出到excel中做進一步加工,因為軟體不可能把使用者所有需求及後來的要求都做進去;多數情況下也不需要匯出太多資料,如果資料匯出太多就要調整需求。

但無論如何總會有需要匯出大資料的時候。比如要把銷售明細匯出給尼爾森、商務部的資訊幫浦等,他們都需要的是大量的明細(要按店分明細,店號+條碼)。

1、用cxgrid

當資料量小於65535時,可以匯出為xls格式,沒有問題。

當資料量大於65535時,匯出xlsx格式老出錯。沒有太深入去研究,感覺是xml操作實現方法的限制。

uses cxgridexportlink;

screen.cursor := crsqlwait;

tryexportgridtoxlsx('c:\test.xlsx', cxgrd1);

finally

screen.cursor := crdefault;

end;

2、用ehlib

匯出xls,xlsx都正常。但xlsx格式時,超過40萬(沒有測試具體資料,只是大概)也有問題,程式好長時間沒有響應。

我修改了源**,將其中的tstringstream替換成了tmemorystream,速度快了很多。之前30分鐘還導不完的資料,改後不到30秒就完成。

uses dbgridehimpexp;

exportdbgridehtoxlsx(dbgrideh1, 'ehlib.xlsx', [xlsxdataasdisplaytext]);

3、採用ole方式操作excel

自己寫了**,雖然可以實現,但是速度太慢。後來在網上搜尋『dataset分頁匯出到excel(支援超過65536條記錄)』,剛好找到乙個寫好的單元,一測試速度相當快,還可以支援按資料量分頁,也可以一次匯出多個資料集,並且可以按**的寬度輸出和顯示進度。

要求客戶機必須安排excel;再說了如果沒有excel,匯出又有何用?

4、還有其它匯出控制項

有了方法3,儘量減少三方控制項的使用。

備註:1、匯出超過10萬條資料,純屬測試,實際需要的可能性不大。

2、寫此文件,記錄此事,改變思維。之前一直在追求所見所得,即能把介面上顯示的效果(字型、寬度、顏色)也一併匯出,所以一直在用cxgrid、ehlib控制項自身的匯出功能,經過一天的測試,發現資料量小的時候都沒有問題,一旦遇到大資料就不行了。追求匯出效果相對資料的使用來說,並不重要;雖然用第3種方式匯出的資料格式不好看,但是還原了事物本質:匯出資料是為了對資料的再利用。

3、追求技術與解決問題的關係

在解決問題同等質量的情況下,採用簡單的技術、自己順手的技術。個人體會。

Javascript匯出Excel的方法

3 48 910 11 web頁面匯出為excel文件的方法 12 13 14 列標題1 15 列標題2 16 列標題3 17 列標題4 18 列標題5 19 20 21 aaa 22 bbb 23 ccc 24 ddd 25 eee 26 27 28 aaa 29 bbb 30 ccc 31 dd...

GridView匯出Excel方法

方法一 將 直接寫在頁面 資料匯出 方法二 將以上 改進成公共方法 將網格資料匯出到excel 網格名稱 如gridview1 要儲存的檔名 三 注意事項 在匯出的時候,如果某個欄位為長數字 如身份證號碼511922198507151512 以0開頭的編號 如0809111212 之類的資料。如果不...

vb匯出到excel的方法

匯出 private sub command5 click if adodc2.recordset.recordcount 0 then msgbox 沒有資料可匯出!vbexclamation,匯出 else msgbox 將把資料匯出到excle裡,請稍等.vbexclamation,匯出 sc...