using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Collections; using Estsh.Web.Service; using Estsh.Web.Util; using NPOI.HSSF.UserModel; using System.IO; using System.Data; namespace Estsh.Core.Web.Controllers { public class SeatAliveTimeSpanController : Controller { // // GET: /SeatAliveTimeSpan/ public SeatAliveTimeSpanService service = new SeatAliveTimeSpanService(); public ActionResult Index() { return View(); } public ActionResult GetSeatType() { Hashtable resault = new Hashtable(); Hashtable ht = service.GetSeatType(); resault.Add("list", ht["data"]); return Json(resault, JsonRequestBehavior.AllowGet); } public ActionResult GetTimeSpanType() { Hashtable resault = new Hashtable(); Hashtable ht = service.GetTimeSpanType(); resault.Add("list", ht["data"]); return Json(resault, JsonRequestBehavior.AllowGet); } public ActionResult GetDataByPage(Pager pager) { if (string.IsNullOrEmpty(Request["startDate"])) { return null; } string startTime = Request["startDate"]; string stopTime = Request["stopDate"]; string seatType = Request["cbbSeatTypeName"]; string gapType = Request["cbbTimeSpanType"]; string rbSort = Request["rbSort"]; string cbRecordCount = Request["cbRecordCount"]; string sortType="DESC"; if(rbSort=="(A-Z)") { sortType="ASC"; } int topN=0; if(int.TryParse(cbRecordCount,out topN)==false) { return null; } DataTable dt = service.GetAliveTimeInfo(startTime, stopTime, "", "", seatType, "", gapType, sortType, topN); Hashtable result = new Hashtable(); result.Add("rows", DataTypeConvert.NewObject.DataTableToArrayList(dt)); return Json(result, JsonRequestBehavior.AllowGet); } /// /// 导出 /// /// /// /// /// /// /// public ActionResult exportData() { int rowCount = Convert.ToInt32(Request["rowCount"]); string startTime = Request["startDate"]; string stopTime = Request["stopDate"]; string seatType = Request["cbbSeatTypeName"]; string gapType = Request["cbbTimeSpanType"]; string rbSort = Request["rbSort"]; string cbRecordCount = Request["cbRecordCount"]; string sortType = "DESC"; if (rbSort == "(A-Z)") { sortType = "ASC"; } int topN = 0; if (int.TryParse(cbRecordCount, out topN) == false) { return null; } Pager pager = new Pager(); pager.pageSize = rowCount; pager.pageNo = 1; DataTable data = service.GetAliveTimeInfo(startTime, stopTime, "", "", seatType, "", gapType, sortType, topN); Stream outputStream = Response.OutputStream; string AbsolutePath = Request.UrlReferrer.AbsolutePath; string url = AbsolutePath.Remove(0, Request.ApplicationPath.Length); GridColumnService colService = new GridColumnService(); Models.SysWebGridColumn[] gridItems = colService.GetColumnByUrl(url); HSSFWorkbook workbook = NPOIExcelTools.DataTableToWorkbook(gridItems, data, "下线时间间隔"); //ArrayList arr = data["data"] as ArrayList; //HSSFWorkbook workbook = new HSSFWorkbook(); //Stream outputStream = Response.OutputStream; //HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("即时产能"); //try //{ // List gridItems = service.GetGridItems(); // if (workbook != null) // { // HSSFRow headRow = (HSSFRow)sheet.CreateRow(0); // for (int i = 0; i < gridItems.Count; i++) // { // if (gridItems[i].export) // { // headRow.CreateCell(i).SetCellValue(gridItems[i].display); // } // } // for (int i = 0; i < arr.Count; i++) // { // Hashtable ht = arr[i] as Hashtable; // int row = i + 1; // HSSFRow dataRow = (HSSFRow)sheet.CreateRow(row); // for (int idx = 0; idx < gridItems.Count; idx++) // { // if (gridItems[idx].export) // { // string key = gridItems[idx].name; // if (ht.ContainsKey(key)) // { // object obj = ht[key]; // if (obj != null && obj != DBNull.Value) // { // dataRow.CreateCell(idx).SetCellValue(obj.ToString()); // } // } // } // } // } // for (int i = 0; i < gridItems.Count; i++) // { // if (gridItems[i].export) // { // sheet.AutoSizeColumn(i); // } // } // } Response.Clear(); workbook.Write(outputStream); Response.Buffer = true; if (Request.Browser.Type.ToUpper().IndexOf("IE") >= 0) { Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("下线时间间隔(" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls")); } else { Response.AppendHeader("Content-Disposition", "attachment;filename=下线时间间隔(" + DateTime.Now.ToString("yyyy-MM-dd") + ").xls"); } Response.ContentEncoding = System.Text.Encoding.UTF8; Response.ContentType = "application/vnd.ms-excel"; Response.Flush(); //} //catch (Exception e) //{ //} //finally //{ // workbook = null; //} return null; } } }