日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#导出Excel

發布時間:2023/12/2 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#导出Excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:用戶查詢一些數據,需要對頁面上的數據生成excel文件。

分析:寫文件,用excel進程,或者使用response方法(都是通過網上查資料,個人就理解成這兩個)

?? 使用excel進程有一個確定,就是程序代碼是在服務器上的,如果服務器上沒有裝excel,那么問題無法解決;就算裝了,但是導出的文件

? 還是在服務器上,無法(相對來說)傳到客戶端。那么就使用response方法了。

?

具體實現:以下的東東,都是自己查閱大量網上資料,和自己總結。

首先,對于從數據庫取出的數據,結果放在list中,然后調用下面方法,這個方法主要是控制excel中顯示的格式以及內容。

public void exportExcel(List<ArchivedWcsTask> wcstask, List<ArchivedMovement> movement,string title){//接收需要導出的數據//命名導出表格的StringBuilder變量StringBuilder sHtml = new StringBuilder(string.Empty);//打印表頭sHtml.Append("<table border=\"1\" width=\"100%\">");sHtml.Append("<tr height=\"40\"><td colspan=\"6\" align=\"center\" style='font-size:24px'><b>" + title + "</b></td></tr>");//打印列名sHtml.Append("<tr height=\"20\" align=\"center\" ><td>任務號</td><td>條碼號</td><td>起點</td><td>終點</td><td>創建時間</td><td>任務</td></tr>");//循環讀取List集合 for (int i = 0; i < wcstask.Count; i++){sHtml.Append("<tr height=\"20\" align=\"left\"><td>"+ wcstask[i].TaskCode + "</td><td>" + wcstask[i].ContainerCodes+ "</td><td>" + wcstask[i].StartLocation+ "</td><td>" + wcstask[i].EndLocation+ "</td><td>" + wcstask[i].CompletedAt.ToString() + "</td><td>"+ movement.Single(x => x.Id == wcstask[i].MovementId).Tag + "</td></tr>");}sHtml.Append("</table>");string fileName = DateTime.Parse(wcstask.FirstOrDefault().CompletedAt.ToString()).ToString("yyyyMMddHHmmss") + ".xls";//調用輸出Excel表的方法ExportToExcel("application/ms-excel", fileName, sHtml.ToString());}

上面的那個ExportToExcel("application/ms-excel", fileName, sHtml.ToString()),這個方法才是調用response導出excel。

?

public void ExportToExcel(string FileType, string FileName, string ExcelContent){System.Web.HttpContext.Current.Response.Charset = "UTF-8";System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());System.Web.HttpContext.Current.Response.ContentType = FileType;System.IO.StringWriter tw = new System.IO.StringWriter();System.Web.HttpContext.Current.Response.Output.Write(ExcelContent.ToString());System.Web.HttpContext.Current.Response.Flush();System.Web.HttpContext.Current.Response.End();}

?

?

?

至此,導出excel已經完成。

實例:這是一個頁面的GET方法,由于是業務的需求,不得不用GET,一般情況用POST方法要好點。。。

?

    [HttpGet][OpenSessionInViewFilter]public ActionResult ExportHistoryTask(string taskcode, string containercode, string taskStartLoc, string taskEndLoc, DateTime? startTime, DateTime? endTime){Wms.WmsRepositories repositories = OpenSessionInViewFilterAttribute.Current.WmsRepositories;if (endTime != null){endTime = endTime.Value.Date.AddDays(1.0);}var list = repositories.WcsTaskRepository.GetHistoryTasks(taskcode, containercode, taskStartLoc, taskEndLoc, startTime, endTime);List<ArchivedMovement> temp = repositories.MovementRepository.GetHistoryMovement(list);if (list.Count <= 0){ViewBag.msg = "結果為空,無法導出";return View();}string title = "您導出條件為:";title += (string.IsNullOrEmpty(taskcode) == true) ? "" : "任務號:" + taskcode;title += (string.IsNullOrEmpty(containercode) == true) ? "" : "條碼號:" + containercode;title += (string.IsNullOrEmpty(taskStartLoc) == true) ? "" : "起點:" + taskStartLoc;title += ((string.IsNullOrEmpty(taskEndLoc)) == true) ? "" : "終點:" + taskEndLoc; ;title += ((string.IsNullOrEmpty(startTime.ToString())) == true) ? "" : "時間范圍:" + startTime.ToString();title += ((string.IsNullOrEmpty(endTime.ToString())) == true) ? "-" : "----" + endTime.ToString();exportExcel(list, temp, title);ViewBag.msg = "導出成功!";// return View();return View();}

?

?

上面那個界面的代碼:

?

@{Layout = null;}正在導出中。。。

?

調用這個界面的代碼:

<script type="text/javascript" src="/Scripts/DatePicker/WdatePicker.js"></script> @*<script src="/Scripts/jquery-1.8.3.min.js" type="text/javascript"></script>*@ <script type="text/javascript">$(document).ready(function () {$("a").click(function () {var taskcode = $("#taskcode").val();var containercode = $("#containercode").val();var taskStartLoc = $("#taskStartLoc").val();var taskEndLoc = $("#taskEndLoc").val();var starttime = $("#starttime").val();var endtime = $("#endtime").val();$(this).attr("href", "/TaskView/ExportHistoryTask?taskcode=" + taskcode+ "&containercode=" + containercode + "&taskStartLoc=" + taskStartLoc+ "&taskEndLoc=" + taskEndLoc + "&startTime=" + starttime + "&endTime=" + endtime);});}); </script> @using (Ajax.BeginForm("HistoryView", null, new AjaxOptions { UpdateTargetId = "list", LoadingElementId = "loading_img", OnBegin = "onListLoadBegin", OnFailure = "onListLoadFailure", OnSuccess = "onListLoadSuccess" }, new { id = "spec_form" })) {<div id="index"><span>任務號:</span><span><input type="text" id="taskcode" name="taskcode" /></span><span>條碼號:</span><span><input type="text" id="containercode" name="containercode" /></span><span>任務起點:</span><span><input type="text" id="taskStartLoc" name="taskStartLoc" /></span><span>任務終點:</span><span><input type="text" id="taskEndLoc" name="taskEndLoc" /></span><span>時間起點</span><span><input type="text" id="starttime" name="startTime" class="Wdate"onclick="WdatePicker({skin:'whyGreen'})" /></span> <span>時間終點</span><span><inputtype="text" id="endtime" name="endTime" class="Wdate" onclick="WdatePicker({skin:'whyGreen'})" /></span><input type="submit" value="查詢" /><input type="reset" value="重置" /><input type="hidden" id="pageIndex" name="pageIndex" value="1" /></div> } <div id="list" style="margin: 20px;"> </div><a>導出歷史任務表</a> <img style="display:none; " id="loading_img" src="@Url.Content("~/Content/loading.gif")" alt="loading" /> @Html.Partial("IndexJs")

?

轉載于:https://www.cnblogs.com/shenghaishiweini/p/3186971.html

總結

以上是生活随笔為你收集整理的c#导出Excel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。