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>

}