epplus excel數據導出(數據量有點大的情況) Web和Client

来源:http://www.cnblogs.com/gaocong/archive/2016/01/15/5133609.html
-Advertisement-
Play Games

Asp.net MVC後臺代碼 public ActionResult Export() { OfficeOpenXml.ExcelPackage ep = new OfficeOpenXml.ExcelPackage(); ...


Asp.net MVC後臺代碼 
public ActionResult Export() { OfficeOpenXml.ExcelPackage ep = new OfficeOpenXml.ExcelPackage(); OfficeOpenXml.ExcelWorkbook wb = ep.Workbook; OfficeOpenXml.ExcelWorksheet ws = wb.Worksheets.Add("我的工作表"); ////配置文件屬性 //wb.Properties.Category = "類別"; //wb.Properties.Author = "作者"; //wb.Properties.Comments = "備註"; //wb.Properties.Company = "公司"; //wb.Properties.Keywords = "關鍵字"; //wb.Properties.Manager = "管理者"; //wb.Properties.Status = "內容狀態"; //wb.Properties.Subject = "主題"; //wb.Properties.Title = "標題"; //wb.Properties.LastModifiedBy = "最後一次保存者"; // var list = GetList(); int x = 0; for (int i = 0; i < 300000; i++) { //if (x == 1000000) //{ // ws = wb.Worksheets.Add("我的工作表" + Guid.NewGuid().ToString()); // x = 0; //} for (int j = 1; j <= 9; j++) { ws.Cells[(x + 1), j].Value = DateTime.Now.ToString(); } x++; } //寫數據 //ws.Cells[1, 1].Value = "Hello"; //ws.Cells[1, 1].Style.Numberformat.Format = "yyyy-MM-dd"; //ws.Column(1).Width = 40;//修改列寬 //ws.Cells["B1"].Value = "World"; //ws.Cells[3, 3, 3, 5].Merge = true; //ws.Cells[3, 3].Value = "Cells[3, 3, 3, 5]合併"; //ws.Cells["A4:D5"].Merge = true; //ws.Cells["A4:D5"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;//居中 //ws.Cells["A4"].Value = "Cells[\"A4:D5\"]合併"; //寫到客戶端(下載) Response.Clear(); Response.AddHeader("content-disposition", "attachment; filename=FileFlow.xlsx"); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; byte[] data=ep.GetAsByteArray(); Response.AddHeader("Content-Length", data.Length.ToString()); Response.BinaryWrite(data); //ep.SaveAs(Response.OutputStream); 第二種方式 Response.Flush(); Response.End(); return null; }
 FileInfo newFile = new FileInfo(@"d:\test.xlsx");
            if (newFile.Exists)
            {
                newFile.Delete();
                newFile = new FileInfo(@"d:\test.xlsx");
            }
            //using (ExcelPackage package = new ExcelPackage(newFile))
            //{
            //    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test");
            //    worksheet.Cells[1, 1].Value = "名稱";
            //    worksheet.Cells[1, 2].Value = "價格";
            //    worksheet.Cells[1, 3].Value = "銷量";

            //    worksheet.Cells[2, 1].Value = "大米";
            //    worksheet.Cells[2, 2].Value = 56;
            //    worksheet.Cells[2, 3].Value = 100;

            //    worksheet.Cells[3, 1].Value = "玉米";
            //    worksheet.Cells[3, 2].Value = 45;
            //    worksheet.Cells[3, 3].Value = 150;

            //    worksheet.Cells[4, 1].Value = "小米";
            //    worksheet.Cells[4, 2].Value = 38;
            //    worksheet.Cells[4, 3].Value = 130;

            //    worksheet.Cells[5, 1].Value = "糯米";
            //    worksheet.Cells[5, 2].Value = 22;
            //    worksheet.Cells[5, 3].Value = 200;

            //    package.Save();
            //}
            OfficeOpenXml.ExcelPackage ep = new OfficeOpenXml.ExcelPackage(newFile);
            OfficeOpenXml.ExcelWorkbook wb = ep.Workbook;
            OfficeOpenXml.ExcelWorksheet ws = wb.Worksheets.Add("我的工作表");
            //配置文件屬性
            //wb.Properties.Category = "類別";
            //wb.Properties.Author = "作者";
            //wb.Properties.Comments = "備註";
            //wb.Properties.Company = "公司";
            //wb.Properties.Keywords = "關鍵字";
            //wb.Properties.Manager = "管理者";
            //wb.Properties.Status = "內容狀態";
            //wb.Properties.Subject = "主題";
            //wb.Properties.Title = "標題";
            //wb.Properties.LastModifiedBy = "最後一次保存者";
            // var list = GetList();
            int x = 0;
            for (int i = 0; i < 100; i++)
            {
                if (x == 1000000)
                {
                    ws = wb.Worksheets.Add("我的工作表" + Guid.NewGuid().ToString());
                    x = 0;

                }
                for (int j = 1; j <= 2; j++)
                {

                    ws.Cells[(x + 1), j].Value = DateTime.Now.ToString();
                    Console.WriteLine((i+1));
                }
                x++;

            }
            ep.Save();

Client的版本親測至少可導出千萬級別的數據,Web版本要看伺服器記憶體配置。。

epplus下載路徑: http://epplus.codeplex.com/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • //可以上傳圖片,txt文檔。doc,wps,還有音頻文件,視屏文件等,功能強大啊!//前臺代碼片,設置上傳圖片的界面 //後臺代碼 ,實現圖片從客戶...
  • 原文鏈接:http://docs.autofac.org/en/latest/getting-started/index.html在程式中使用Autofac的基本模式是:用控制反轉(IoC)的思想組織程式。添加對 Autofac 的引用。程式啟動階段創建 ContainerBuilder。註冊組件。...
  • 以前寫過一個wp8的工程,說實話那會的代碼很麻煩,寫起來費勁,另外還沒多少人下載,不過到windows 10 開始微軟出了UWP架構以後一切都像以前的winform wpf一樣好轉起來,新建一個工程以後模板很簡潔。現在就開始介紹一下基本控制項的使用,為新手寫程式提供一個例子。7天酒店沒有官方客戶端.....
  • 貨位是ERP系統總的倉庫管理中必不可少的,倉庫是有貨架組成,貨架上的每個格子就是一個貨位,所有貨位上的商品的庫存總和就是倉庫商品的庫存。倉庫的貨位主要分為貨架和托盤,貨架就是倉庫的固定貨位,托盤就是移動貨位,或者稱為移動托盤。倉庫的貨位類型可以分為存貨位,揀貨貨位,移動貨位三種大的類型。按正殘品.....
  • 上周六我發表的文章《分享我基於NPOI+ExcelReport實現的導入與導出EXCEL類庫:ExcelUtility》受到了大家的熱烈支持與推薦,再此表示感謝,該ExcelUtility類庫自上次發文起,又經過了多次的改進,增加了許多的功能與方法,可以全面滿足大家的需求,下麵先來看一下新方法的測試...
  • 採購商品入庫完成後,下一步就是上架操作。所謂上架就是把入庫放到移動托盤的商品轉移到固定貨架上,貨架上有貨位號,可以把商品放到指定的貨位上。主要分兩步操作,上架操作主要是移動PDA上完成的 1.掃描移動托盤號 2.掃描上架貨位 上架的貨位是揀貨位或者存貨位,先掃描貨位號,然後掃...
  • 最近看了一下wpf 越發喜歡. 邊看邊學,順便做點東西. WPF 的窗體有點醜.就自己做個窗體,當學習的demo吧 效果圖:實現功能: 最大化;最小化;關閉;按鈕三態; 標題欄拖動;雙擊標題欄最大化或者還原;滑鼠在窗體邊緣拖動可調整窗體大小;1. 右上角三個按鈕採用樣式實現效果 1 樣式2...
  • private void button1_Click(object sender, EventArgs e) { int[] numbers = new int[7] { 0,1,2,3,4,5,6}; var result0 = from...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...