public IActionResult Search(Search_param _params, int now_page = 1) { clear_session(); //Sessionのクリア if (_params.Start_day.ToString("yyyy") != null) { HttpContext.Session.SetString("date1", _params.Start_day.ToString("yyyy-MM-dd")); ViewBag.date1 = _params.Start_day.ToString("yyyy") == "0001" ? null : HttpContext.Session.GetString("date1"); } else { ViewBag.date1 = "yyyy-MM-dd"; } if (_params.End_day != null) { HttpContext.Session.SetString("date2", _params.End_day.ToString("yyyy-MM-dd")); ViewBag.date2 = _params.End_day.ToString("yyyy") == "0001" ? null : HttpContext.Session.GetString("date2"); } else { ViewBag.date2 = "yyyy-MM-dd"; } if (_params.Word != null) { HttpContext.Session.SetString("freeword", _params.Word); ViewBag.freeword = HttpContext.Session.GetString("freeword"); } ViewBag.Check = _params.Check ? true : false; if (_params.Check) { HttpContext.Session.SetString("check", "Checked"); } var _list = Search_Target(); SearchInqury _search_inqury = new SearchInqury(_list, _params.Start_day, _params.End_day, _params.Check, _params.Word); var _result = _search_inqury.Search_start(); if (_result.Count() == 0) { ViewBag.error = " 該当データはありません"; } else { ViewBag.error = String.Format(" {0}件ヒット", _result.Count().ToString()); } Pagenation pages = new Pagenation(_result.AsQueryable().AsNoTracking(), 20); var _result2 = pages.Pager(now_page); //_srにはページネーションをどこまで出すかをLIST<int>で渡している。 var _sr = pages.Separate_now(now_page); if (_sr.Count() <= 1) //1件未満の場合はViewでは非表示にする。 { ViewBag.separate = new List <int>(); } else { ViewBag.separate = _sr; } ViewBag.now_page = now_page; return(View("Index", _result2)); }
//[AuthorizationFilter] Excelファイルをダウンロードさせるため、ログイン必須を解除 public async Task <IActionResult> Export(Search_param _params, bool excel = false, bool monthly_report = false) { // Sessionに保持している値を変数に格納する。(後にサブルーチンに渡します) var check = _params.Check; var date1 = Convert.ToDateTime(_params.Start_day); var date2 = Convert.ToDateTime(_params.End_day); var word = _params.Word; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); //SHIFT_JISを使えるようにする。 StringBuilder csv = new StringBuilder(""); Downloader _downloader = new Downloader(this._context); //CSVのヘッダー情報を取得する。 IQueryable <Mst_Download> header = await Task.Run(() => this._context.Mst_Download .OrderBy(x => x.Order_No) .OrderBy(x => x.Id).AsQueryable()); int _length = header.Select(x => x.Column_Name).Count(); //要素数を取得する。 foreach (var v in header) { if (csv.Length >= 1) { csv.Append(","); } csv.Append(v.Column_Name); } csv.Append("\r\n"); csv.Append(_downloader.Get_Inqury(header, _length, date1, date2, check, word)); if (excel) //Excelのダウンロードの際に使用する。 { //string date = ""; string file_name = ""; //Excelファイル名定義 if (monthly_report) //月報の場合 { file_name = _params.Start_day.ToString("yyyy年M月月報"); } else if (_params.Start_day.ToString() == "0001/01/01 0:00:00" && _params.End_day.ToString() == "0001/01/01 0:00:00") { file_name = String.Format(@"問合せ表({0})", DateTime.Today.ToString("M月dd日")); } else if (_params.Start_day.ToString() == "0001/01/01 0:00:00") { file_name = String.Format(@"問合せ表({0})", _params.End_day.ToString("M月dd日")); } else { file_name = String.Format(@"問合せ表({0})", _params.Start_day.ToString("M月dd日")); } byte[] excel_file = _downloader.Create_Excel(file_name, csv); return(File(excel_file, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file_name + ".xlsx")); } var result = Encoding.GetEncoding("Shift_JIS").GetBytes(csv.ToString()); //文字列をバイナリ化 return(File(result, "text/csv", "inquiry.csv")); }