在ASP.NET MVC中利用Aspose.cells 將查詢出的資料匯出為excel,並在瀏覽器中下載。

來源:互聯網
上載者:User

標籤:效果   bsp   工作   new   span   大會   get   資料匯出   student   

正題前的嘮叨

本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麼做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好’東西記錄下來,一是加深印象;二是以後可以作為參考;三是希望博友們可以提出不足和可以最佳化的地方,一起討論。

這個是我去一家公司沒多久,讓我做的小功能,主要是匯出excel並在瀏覽器下載下來。 但是會有不同的細微的需求差別。

第一次發部落格,有描述不清楚的地方還請見諒,希望各位多多指點。

進入正題

簡單的需求描述

將查詢出來已經轉化好了的list<T> xxx 的資料的某些列,匯入到excel之中,並在瀏覽器中下載下來。(這裡用Student代替)

開始實現

1.student表的列如所示

                                             

2.使用的dll :Aspose.Cells.dll  (5.3.1.0)。

3.部分實現代碼:

樣式及表頭

        Workbook workbook = new Workbook();            Worksheet worksheet = workbook.Worksheets[0];            Cells cells = worksheet.Cells;            cells.InsertRow(0);            Aspose.Cells.Style style = workbook.Styles[workbook.Styles.Add()];//新增樣式            style.HorizontalAlignment = TextAlignmentType.Center;//文字置中              style.Font.Size = 11;//文字大小              style.Font.IsBold = true;//粗體             cells.SetRowHeight(0, 20);              //設定行高 

List<string> listHead = new List<string>(); listHead.Add("學生編號"); listHead.Add("學生姓名"); listHead.Add("學生年齡"); listHead.Add("電話"); for (int i = 0; i < listHead.Count; i++) { cells[0, i].PutValue(listHead[i]); cells[0, i].SetStyle(style); cells.SetColumnWidth(i, 30); }

 

寫入內容部分

      for (int i = 1; i <= list1.Count; i++)           {                cells[i, 0].PutValue(list1[i-1].Id);                cells[i, 1].PutValue(list1[i-1].Name);                cells[i, 2].PutValue(list1[i-1].Age);                cells[i, 3].PutValue(list1[i-1].Tel);            }

最開始用的是這種笨重的方法來寫入內容,但是這樣子會遍曆很多次,如果資料量大會十分的慢,所一找了一下文檔,發現一個簡單的方法

寫入內容部分最佳化

 worksheet.Cells.ImportCustomObjects(list, new string[] {"Id","Name","Age","Tel"}, false, 1, 0, list.Count, true, "", false);

跟進去看各個參數

public int ImportCustomObjects(ICollection list, string[] propertyNames, bool isPropertyNameShown, int firstRow, int firstColumn, int rowNumber, bool insertRows, string dateFormatString, bool convertStringToNumber)

看參數名稱應該比較清楚了。分別是需要匯入的list,要寫入的列,是否將屬性名稱顯示出來,寫入excel的開始行,開始列.....

這樣就比較簡潔明了,效率也比之前快許多

儲存excel

workbook.Save(System.Web.HttpContext.Current.Response, "學生資訊.xls", ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Xlsx));

也解釋不清楚這裡,大概意思就是把寫入的excel資訊,Respose給前台。

前台的調用

 <script>        $(function() {            $(".export_excel").click(function() {                downExcel(‘/aspose/exportexcel‘);            });        });        function downExcel(iframeUrl) {            if (!iframeUrl) {                return;            }            var body = document.getElementsByTagName("body")[0];            var downloadIframe = document.createElement("iframe");            downloadIframe.setAttribute("src", iframeUrl);            downloadIframe.setAttribute("style", "display:none;")            body.appendChild(downloadIframe);        }    </script>

 這裡就是用ifram開啟。也可以直接用windows.open(‘url’);來實現

 $(function() {            $(".export_excel").click(function() {                window.open(‘/aspose/exportexcel‘);            });        });

最後excel效果  

結語

效果基本達到需求,後面需求會變更,這種方式就不能完全滿足需求,由於今時間太晚了,下次再來寫,謝謝大家,請多指教,大家晚安!

  

在ASP.NET MVC中利用Aspose.cells 將查詢出的資料匯出為excel,並在瀏覽器中下載。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.