Ejemplo n.º 1
0
        public async Task <IActionResult> OnPostExport(int currentPage, int pageSize, string searchString, string sortOrder)
        {
            StockItem = await InitiateView(currentPage, pageSize, searchString, sortOrder);

            string   sWebRootFolder = _hostingEnvironment.WebRootPath;
            string   sFileName      = @"Stock Data.xlsx";
            string   URL            = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName);
            FileInfo file           = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
            var      memory         = new MemoryStream();

            using (var fs = new FileStream(Path.Combine(sWebRootFolder, sFileName), FileMode.Create, FileAccess.Write))
            {
                ExcelPackage package = new ExcelPackage();
                package.Workbook.Worksheets.Add("Stock");
                ExcelWorksheet stockSheet = package.Workbook.Worksheets["Stock"];
                using (var range = stockSheet.Cells["A1:F1"])
                {
                    range.Style.Font.Bold        = true;
                    range.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(23, 121, 186));
                    range.Style.Font.Color.SetColor(Color.White);
                }
                stockSheet.Cells[1, 1].Value = "Id";
                stockSheet.Cells[1, 2].Value = "Stock Name";
                stockSheet.Cells[1, 3].Value = "Unit";
                stockSheet.Cells[1, 4].Value = "Price";
                stockSheet.Cells[1, 5].Value = "In Stock";
                stockSheet.Cells[1, 6].Value = "Store";
                for (int r = 0; r < StockItem.Count(); r++)
                {
                    stockSheet.Cells[r + 2, 1].Value = StockItem.ToList()[r].Id;
                    stockSheet.Cells[r + 2, 2].Value = StockItem.ToList()[r].StockName;
                    stockSheet.Cells[r + 2, 3].Value = StockItem.ToList()[r].Unit;
                    stockSheet.Cells[r + 2, 4].Value = StockItem.ToList()[r].Price;
                    stockSheet.Cells[r + 2, 5].Value = StockItem.ToList()[r].InStock;
                    int storeId = StockItem.ToList()[r].StoreId;
                    stockSheet.Cells[r + 2, 6].Value = _context.Stores.FirstOrDefault(s => s.Store_ID == storeId).StoreName;
                    stockSheet.Cells[1, 1, 1, 6].AutoFitColumns();
                }

                package.SaveAs(fs);
                package.Dispose();
            }
            using (var stream = new FileStream(Path.Combine(sWebRootFolder, sFileName), FileMode.Open))
            {
                await stream.CopyToAsync(memory);
            }
            memory.Position           = 0;
            TempData["StatusMessage"] = "Stock successfully exported to file " + sFileName + ".";
            return(File(memory, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", sFileName));
        }