public ActionResult GetGridData(string sidx, string sord, string filters, int page, int rows, string tableName, WebISGDatabaseType databaseType) { var jsonData = new JsonResult(); if (string.IsNullOrEmpty(tableName)) { return jsonData; } var filterData = filters != null ? JsonConvert.DeserializeObject<FilterDataObject>(filters) : new FilterDataObject(); var rowCount = WebDataTable.GetRowCount(tableName, filterData, databaseType); var currentPage = page; var pageIndex = currentPage - 1; var pageSize = rows != -1 ? rows : rowCount; var totalRecords = rowCount; var totalPages = (int)Math.Ceiling(totalRecords / (float)pageSize); var dataTable = new WebDataTable(tableName, sidx, sord, pageIndex, pageSize, filterData, databaseType); var rowData = new { total = totalPages, page = currentPage, records = totalRecords, rows = ( from row in dataTable.Rows select new { id = row.RowId, cell = row.CellValueArray } ).ToArray() }; jsonData = Json(rowData, JsonRequestBehavior.AllowGet); return jsonData; }
/// <summary> /// This method is called to allow the user to download the entire table as a CSV file. /// </summary> /// <returns></returns> public FileStreamResult DownloadFullExcel(string id, WebISGDatabaseType databaseType, bool showHiddenColumns = false) { //Create a workbook & worksheet var wb = new XLWorkbook(); var ws = wb.Worksheets.Add(id); if (!string.IsNullOrEmpty(id)) { var filterData = new FilterDataObject(); var rowCount = WebDataTable.GetRowCount(id, filterData, databaseType); var dataTable = new WebDataTable(id, "", "asc", 0, rowCount, filterData, databaseType); // get column headers var colHeaders = dataTable.Columns .Where(c => !c.Name.Equals("act") && (showHiddenColumns || c.Hidden.ToLower() != "true")) .Select(cd => cd.FriendlyName ?? string.Empty) .ToArray(); // get row data var rowsToInsert = new List<Array>(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var row in dataTable.Rows) { rowsToInsert.Add( row.Cells .Where(cd => showHiddenColumns || cd.Column.Hidden.ToLower() != "true") .Select(cd => cd.Value ?? string.Empty) .ToArray() ); } // add data to worksheet for (var i = 0; i < colHeaders.Length; i++) { ws.Cell(1, i + 1).Value = colHeaders[i]; } // ReSharper disable once UnusedVariable var table = ws.Cell(1, 1).InsertTable(rowsToInsert); ws.Columns().AdjustToContents(1,99); } var memoryStream = new MemoryStream(); wb.SaveAs(memoryStream); memoryStream.Flush(); memoryStream.Position = 0; return File(memoryStream, "application/vnd.ms-excel", string.Format("{0}.xlsx", id)); }