.Net MVC 匯入匯出Excel總結(三種匯出Excel方法,一種匯入Excel方法)
該資料僅供學習,禁止用於商業用途public class ExcelController : Controller { // // GET: /Excel/ Models.zbwxglEntities myMdl = new Models.zbwxglEntities(); /// <summary> /// 第一種方法,利用檔案輸出流進行讀寫操作 /// </summary> public void outExcel() { DataTable dtData = (DataTable)Session["datatable"]; string shtnl = ""; shtnl = "<table border='1' cellspacing='1' cellpadding='1'>"; shtnl = shtnl + "<thead>"; for (int j = 0; j < dtData.Columns.Count; j++) { shtnl = shtnl + "<th>" + j + "</th>"; } shtnl = shtnl + "</thead><tbody>"; for (int i = 0; i < dtData.Rows.Count; i++) { shtnl = shtnl + "<tr>"; for (int j = 0; j < dtData.Columns.Count; j++) { shtnl = shtnl + "<td>" + dtData.Rows[i][j] + "</td>"; } shtnl = shtnl + "</tr>"; } shtnl = shtnl + "</tbody></table>"; ExportToExcel("application/x-excel", "123.xls", shtnl); } public void ExportToExcel(string FieldType, string FileName, string dt) { System.Web.HttpContext.Current.Response.Charset = "utf-8"; System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString()); System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); System.Web.HttpContext.Current.Response.ContentType = FieldType; StringWriter tw = new StringWriter(); System.Web.HttpContext.Current.Response.Output.Write(dt); System.Web.HttpContext.Current.Response.Flush(); System.Web.HttpContext.Current.Response.End(); } /// <summary> /// 第二種方法,利用微軟自帶外掛 /// </summary> /// <returns></returns> public ActionResult DownloadFile() { try { DataTable dt = (DataTable)Session["datatable"]; string strdate = DateTime.Now.ToString("yyyyMMddhhmmss"); string str = Server.HtmlEncode(Request.PhysicalApplicationPath).ToString() + "Content\\DownLoadTest\\" + Session["YongHuID"] + strdate + "Excel.xls"; if (System.IO.File.Exists(str)) { //如果存在則刪除 System.IO.File.Delete(str); } ConvertHelper myConvertHelper = new ConvertHelper(); DataTableToExcel(dt, str); System.Threading.Thread.Sleep(5000); return File(str, "application/vnd.ms-excel", strdate + "Excel.xls"); } catch { DataTable dt = new DataTable(); List<Dictionary<string, object>> ListReturn = ConvertHelper.DtToList(dt); return Json(ListReturn, JsonRequestBehavior.AllowGet); } } public void DataTableToExcel(DataTable datas, string p) { Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); app.SheetsInNewWorkbook = 1; app.Workbooks.Add(); Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)app.ActiveWorkbook.Worksheets[1]; for (int i = 0; i < datas.Columns.Count; i++) { sheet.Cells[1, i + 1] = datas.Columns[i].ColumnName; } for (int i = 0; i < datas.Rows.Count; i++) { for (int j = 0; j < datas.Columns.Count; j++) { sheet.Cells[2 + i, j + 1] = datas.Rows[i][j].ToString(); } } app.Visible = true; System.Threading.Thread.Sleep(500); try { app.ActiveWorkbook.SaveAs(p); } catch { } app.Quit(); } /// <summary> /// 第三種方法,利用NPOI外掛 /// </summary> /// <returns></returns> public FileResult DownLoadExcelJiZuChaXunGenRenXiaoFeiJiLu() { DataTable dt = (DataTable)Session["datatable"];//獲取需要匯出的datatable資料 //建立Excel檔案的物件 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); //新增一個sheet NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //給sheet1新增第一行的頭部標題 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); //row1.RowStyle.FillBackgroundColor = ""; for (int i = 0; i < dt.Columns.Count; i++) { row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName); } //將資料逐步寫入sheet1各個行 for (int i = 0; i < dt.Rows.Count; i++) { NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { rowtemp.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString().Trim()); } } string strdate = DateTime.Now.ToString("yyyyMMddhhmmss");//獲取當前時間 // 寫入到客戶端 System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); ms.Seek(0, SeekOrigin.Begin); return File(ms, "application/vnd.ms-excel", strdate + "Excel.xls"); } /// <summary> /// Excel匯入 /// </summary> /// <returns></returns> public ActionResult GetTableFromExcel() { //FileStream file = new FileStream(Server.HtmlEncode(Request.PhysicalApplicationPath).ToString() + "excel\\123.xlsx", FileMode.Open, FileAccess.Read); HttpPostedFileBase fostFile = Request.Files["file1"]; Stream streamfile = fostFile.InputStream; //HSSFWorkbook hssfworkbook = new HSSFWorkbook(streamfile); HSSFWorkbook hssfworkbook = new HSSFWorkbook(streamfile); using (NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0)) { DataTable table = new DataTable(); IRow headerRow = sheet.GetRow(0);//第一行為標題行 int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1 //handling header. for (int i = headerRow.FirstCellNum; i < cellCount; i++) { DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); table.Columns.Add(column); } for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = table.NewRow(); if (row != null) { for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) dataRow[j] = GetCellValue(row.GetCell(j)); } } table.Rows.Add(dataRow); } for (int i = 0; i < table.Rows.Count; i++) { //myUpLoadBLL.ForDownLoad(table.Rows[i][1].ToString(), table.Rows[i][2].ToString(),Convert.ToBoolean( table.Rows[i][3])); } } return Content(""); } /// <summary> /// 根據Excel列型別獲取列的值 /// </summary> /// <param name="cell">Excel列</param> /// <returns></returns> private static string GetCellValue(ICell cell) { if (cell == null) return string.Empty; switch (cell.CellType) { case CellType.BLANK: return string.Empty; case CellType.BOOLEAN: return cell.BooleanCellValue.ToString(); case CellType.ERROR: return cell.ErrorCellValue.ToString(); case CellType.NUMERIC: case CellType.Unknown: default: return cell.ToString(); case CellType.STRING: return cell.StringCellValue; case CellType.FORMULA: try { HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook); e.EvaluateInCell(cell); return cell.ToString(); } catch { return cell.NumericCellValue.ToString(); } } } }
相關推薦
.Net MVC 匯入匯出Excel總結(三種匯出Excel方法,一種匯入Excel方法)
public class ExcelController : Controller { // // GET: /Excel/ Models.zbwxglEntities myMdl = new Models.zbwxglEntities();
.Net MVC 導入導出Excel總結(三種導出Excel方法,一種導入Excel方法) 通過MVC控制器導出導入Excel文件(可用於java SSH架構)
ets esp llb pat lencod cnblogs 創建 etime mmd public class ExcelController : Controller { // // GET: /Excel/ M
android中RadioButton中的自帶的圓圈如何去掉,兩種方法,一種.xml、一種程式碼中
第一種.xml中 我想大家都知道 android:button="@null"其實這就是簡單的多RadioButton做的一個自定義,null就是給他為空,所以就變相的隱藏掉了它自帶那個圓圈。 重點是第二種的方法,在java程式碼中:RadioButton IB_PullD
ASP.NET MVC:多語言的三種技術處理策略
背景 本文介紹了多語言的三種技術處理策略,每種策略對應一種場景,這三種場景是: 多語言資源資訊只被.NET使用。 多語言資源資訊只被Javascript使用。 多語言資源資訊同時被.NET和Javascript使用。 下文我們就一個一個場景的分析。 第一種場景:多語言資源資訊只被.NET使用
ASP.NET MVC 排球計分程序 (三)需求分析與數據庫設計
arch 情況 img 需求 全場 ima 功能 每次 str 需求分析: 軟件名稱:排球計分程序 1、 需要鍵入比賽人員的的姓名,需要根據場上的比賽結果及時做出操作,記分員可以在記錯的情況下撤銷上一部操作。比賽結束,記分員應能查詢到每個隊伍的進球情況,以及攔網、擊球等的
在ASP.NET MVC中利用Aspose.cells 將查詢出的數據導出為excel,並在瀏覽器中下載。
width tdi 新增 column 需求 options 解決 印象 ats 正題前的嘮叨 本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麽做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好
ASP.NET MVC下自定義錯誤頁和展示錯誤頁的幾種方式
提供服務 one url attribute 運行 16px execute 釋放 namespace 在網站運行中,錯誤是不可避免的,錯誤頁的產生也是不可缺少的。 這幾天看了博友的很多文章,自己想總結下我從中學到的和實際中配置的。 首先,需要知道產生錯誤頁的來源,一種
初學asp.net mvc架構:個人總結
Mvc Ajax→url:/控制器名/方法名/引數 /[Controller]/[ActionName]/[Parameters] 控制器名去掉Controller 將資訊傳遞到控制器,控制器處理來返回(對引數的處理
ASP.NET MVC 檔案上傳和檔案下載 以及 檔案下載的幾種方法
1、序言最近專案中需要用到這個功能點,但是網上下載的時候總是出現亂碼。所以趁著這個時間自己整理出了一份,以後需要的時候就直接看自己的部落格就行了。已經測試過:在谷歌、火狐、IE等瀏覽器上都不會出現亂碼問題。2、結果展示2.1、上傳檔案成功介面 2.2、下載檔案成功介面3、上傳
asp.net MVC前臺View頁面向後臺Controller控制器傳遞資料的幾種方式
上一篇文章Asp.Net MVC中的@model與Model講解了後臺控制器如何向前臺頁面傳遞資料,今天就接著為大家講解前臺View頁面向後臺Controller控制器傳遞資料的幾種方式。這幾種方式是我在實際中使用並總結的,如果那個地方說的不對或有不足之處,歡迎各位指出並給
無極哥教你三種微信爆粉的方法,一天加滿5000好友
直接 數據傳輸 騰訊 用戶數據 規則 時間 服務器 之前 href 2018年,朋友圈或各種社交場合總時不時冒出“某某做微信爆粉,一天加滿5000好友”的說法。這確實是存在的,但嚴重違規。突破每日添加好友數量上限的雙向爆粉,必須使用修改微信底層協議的第三方軟件才能實現。今天
三種微信爆粉的方法,一天加滿5000好友
ESS 穩定 微博 添加好友 類型 識別 fff 什麽 交流 2018年,朋友圈或各種社交場合總時不時冒出“某某做微信爆粉,一天加滿5000好友”的說法。這確實是存在的,但嚴重違規。突破每日添加好友數量上限的雙向爆粉,必須使用修改微信底層協議的第三方軟件才能實現。今天,無極
對只含0,1,2三種元素的陣列設計一種O(n)時間的排序演算法
針對只含0,1,2三種元素的陣列的一種O(n)時間的排序演算法 1. 問題重述 給定一個整型陣列,陣列中的元素只有三種:0,1,2,例如:[1 ,2 ,0 ,0 ,2 ,1 ,2 ,1 ,1 ,0 ,2 ,2 ,1 ,0 ],試設計一個時間複雜度為O(n),空間複雜度為O(1)的演算法,
往Excel中快速寫入數據的又一種方法
fps fas framework 導出到excel object targe star 列名 num 往Excel寫入數據的方法比較多,但實際應用場景及對性能的要求決定了需要對方法有所取舍。一些具體情形和方法可以參見https://blog.csdn.net/u01310
iOS總結-效能優化-UITableView效能優化-定義一種Cell
隨著APP使用者介面內容越來越豐富,,再強的手機可能都無法同時渲染複雜的UI介面和保證流暢的體驗. 關於UITableView怎麼實現,正常的當然是用UITableview+自定義的UITableviewCell. 本篇的優化策略: 只定義一種cell 提前計算並快取每個Cell的高
AOP實踐--ASP.NET MVC 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔
在開發程式的過程中,稍微不注意就會隱含有sql注入的危險。今天我就來說下,ASP.NET mvc 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔。不用每下地方對引數的值都進行檢查,看是使用者輸入的內容是否有危險的sql。如果沒個地方都要加有幾個缺
孤傲蒼狼 只為成功找方法,不為失敗找藉口! javaweb學習總結(三十九)——資料庫連線池 一、應用程式直接獲取資料庫連線的缺點 使用者每次請求都需要向資料庫獲得連結,而資料庫建立連線通常需要
一、應用程式直接獲取資料庫連線的缺點 使用者每次請求都需要向資料庫獲得連結,而資料庫建立連線通常需要消耗相對較大的資源,建立時間也較長。假設網站一天10萬訪問量,資料庫伺服器就需要建立10萬次連線,極大的浪費資料庫的資源,並且極易造成資料庫伺服器記憶體溢位、拓機。如下圖所示: 二、使用資料
ASP.NET MVC 學習 --- 第七課(在非正常關閉IE之後,自動清除資料庫中的登陸資訊)
使用者Logon之後,我們可以在logoff裡面寫一些方法幫助我們清理資料庫中的一些資料。 但是如果使用者是非正常Logoff,而是直接關閉IE,如何去自動的清理資料庫中的資料吶。這裡是用session_end方法 方法一: 在Web.Config裡面 <sessi
kotlin, 一種新的android平臺一級開發語言
程序 16px 語法 jvm ava lin 使用 ide 擁有 最近看到一則科技新聞, 大致內容是google將kotlin語言作為android應用開發的一級語言, 與java並駕齊驅, 這是一個開發界的大事件大新聞, 連google的親兒子go語言也沒有這
【強連通分量縮點】【拓撲排序】【dp預處理】CDOJ1640 花自飄零水自流,一種相思,兩處閑愁。
如果 vector brush algo blog pri cmp 處理 ret 題意: 在n個點m條邊的有向圖上,從1出發的回路最多經過多少個不同的點 可以在一條邊上逆行一次 題解: 在同一個強連通分量中,顯然可以經過當中的每一個點 因此先將強連通分量縮點,點權為強連通分