2017-02-25 20 views
0

Excel報表應該支持100萬行和800列。該應用程序必須在兩種模式下生成excel 1.online,其中在網格視圖上選擇一個實體必須生成excel報告。 2.offline,用戶可以選擇多個實體,使用UI上的按鈕可以觸發它生成excel,並可以通過郵件接收excel。EXPORT帶500列的100萬行數據從SQL數據庫應用程序buil使用.NET 3.5框架導入excel

當前應用程序支持上述功能,但導出非常慢。應用程序和數據庫位於同一臺服務器上。牢記這一點,我們必須設計一個框架,即使將應用程序的數據以最少的性能問題提高10倍,也會快速實現。

SSIS是否會達到目的,或者如果有其他建議?

+0

我在想「數據透視表連接到數據庫」。 –

+1

超出了我將放入Excel的範圍。 1)您如何使用如此大量的數據以及2)您如何期望Excel消耗如此大量的數據? ;-) –

+0

目前我們使用開放的XML。多個用戶上傳和導出,我們發現由於有大量導出正在進行,尤其是當導出的數據大約在20K +左右時,應用程序會掛起。我們預計,應用程序必須處理10倍的數據,性能是主要關注的問題。 –

回答

0

你不說什麼用戶界面,但既然你提到「在線」,我假設它是一個瀏覽器。因此,最快的方法是查詢SQL Server,提取數據集,並使用記錄的OpenDocument XML生成XLSX文件,作爲由MVC Controller/Web API返回的響應流的一部分。這將生成最少的數據處理,並保持Web服務器上的文本處理。

+0

目前我們使用開放式XML。多個用戶上傳和導出,因此有大量導出正在進行,特別是當導出的數據大約爲20K +時,應用程序會掛起。我們預計,應用程序必須處理10倍的數據,性能是主要關注的問題。目前我們在服務器端生成excel,並使用郵件發送給離線和在線的用戶可下載。我們正在尋找框架或其他替代方案的改進。 –

+0

您真的需要告訴我們更多關於在應用程序堆棧中花費的時間。你有沒有使用一個分析器來找出時間花在哪裏?你能隔離最昂貴的過程嗎?如果您的應用程序已經進行了最佳編碼,並且您使用的是IIS,並且負載是在生成XML中,那麼只需在其他計算機上擴展更多的IIS實例 - 一旦您擁有了應對高負載的傳統方式消除了代碼效率低下。 – PhillipH

0

100萬條記錄肯定會花費一些時間,並且在併發環境中這並不好。最好有面向服務的體系結構,或者只是異步執行代碼以防止掛起。 導出(例如在服務中)的處理應在後臺線程中運行以處理加載。

完成後生成併發送郵件,如您所述。 或者保存在應用程序的臨時目錄中,例如使用SignalR(或者只是將服務器與Ajax集中在一起)來檢查服務中的進程是否已完成。如果是,則重定向客戶端以下載文件。

相關問題