Features
リモートロード/保存
リモートロード/保存
何らかのアクションによってxlsxファイルまたはワークブックをロードし、それをサーバーに保存します。
機能
リモートロード/保存
この例は、何らかのアクションによってxlsxファイルまたはワークブックをロードし、それをサーバーに保存する方法を示します。この例では、[保存]ボタンがクリックされると、FlexSheetがファイルをサーバーに送信し、そのファイルをブラウザが自動的にサーバーからダウンロードします。
using C1.Web.Mvc.Serialization; using C1.Web.Mvc.Sheet; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using System; using System.IO; namespace FlexSheetExplorer.Controllers { public partial class FlexSheetController : Controller { private const string FILE_PATH = "Content\\xlsxFile\\RemoteSave.xlsx"; private readonly string _webRootPath; #if NETCORE31 public FlexSheetController(IWebHostEnvironment hostingEnvironment) #else public FlexSheetController(IHostingEnvironment hostingEnvironment) #endif { _webRootPath = hostingEnvironment.WebRootPath; } public ActionResult RemoteLoadSave() { return View(); } public ActionResult RemoteLoadXlsx() { return this.C1Json(FlexSheetHelper.Load("~/Content/xlsxFile/example1.xlsx")); } public JsonResult RemoteSaveFile([FlexSheetRequest]FlexSheetSaveRequest request) { var success = true; var error = ""; var savePath = Path.Combine(_webRootPath, FILE_PATH); try { Stream st = request.GetFileStream(); using (FileStream fs = new FileStream(savePath, FileMode.Create)) { if (st != null) { st.CopyTo(fs); } } } catch (Exception e) { success = false; error = e.ToString(); } return this.C1Json(FlexSheetHelper.Save(success, error)); } public FileResult DownloadFile() { var savePath = Path.Combine(_webRootPath, FILE_PATH); var name = Path.GetFileName(FILE_PATH); return File(new FileStream(savePath, FileMode.Open, FileAccess.Read), "application/msexcel", name); } } }
@section Scripts{ <script> function remoteSave() { var flexSheet = wijmo.Control.getControl('#flexSheet'); flexSheet.remoteSave(c1.mvc.grid.sheet.ContentType.Xlsx); } function onFileSaved(sender, args) { if (args.success) { window.location.href = '@Url.Action("DownloadFile")'; } else { alert(args.error); } } </script> } <div> <div class="copy"> <h3> @Html.Raw(FlexSheetRes.RemoteLoadSave_Text2) </h3> <p>@Html.Raw(FlexSheetRes.RemoteLoadSave_Text0)</p> </div> <div> <c1-flex-sheet class="flexSheet" id="flexSheet" load-action-url="@(Url.Action("RemoteLoadXlsx"))" save-action-url="@(Url.Action("RemoteSaveFile"))" remote-saved="onFileSaved"> </c1-flex-sheet> </div> </div> @section Summary{ <p>@Html.Raw(FlexSheetRes.RemoteLoadSave_Text1)</p> }