FlexSheetでは、C1JSONRequestを使用してExcelファイルをリモートでロードおよび保存できます。それには、リモートURLを指定して、ExcelファイルまたはワークブックからFlexSheetコントロールにデータをロードし、FlexSheetデータをExcelファイルまたはワークブックとしてサーバーに保存します。
次の例は、FlexSheetHelperクラスのLoadメソッドを使用して、サーバーにあるExcelファイルをFlexSheetにロードします。
次のコード例は、ExcelファイルまたはワークブックからFlexSheetコントロールにデータをリモートにロードする方法を示します。
RemoteLoadController.cs
C# |
コードのコピー
|
---|---|
public class RemoteController : Controller { // GET: /<controller>/ public ActionResult Index() { return View(); } public ActionResult RemoteLoadXlsx() { return this.C1Json(FlexSheetHelper.Load("~/Content/ExcelFiles/WorkBook.xlsx"), null, null, JsonRequestBehavior.AllowGet); } } |
ここでは、リモートでロードされるExcelワークブックは、アプリケーションの「Content」フォルダに配置されます。
RemoteLoading.cshtml
Razor |
コードのコピー
|
---|---|
@using C1.Web.Mvc.Sheet; <script src="http://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script> <div> @(Html.C1().FlexSheet().CssClass("flexSheet").Height(700).Width(700) .RemoteLoad(Url.Action("RemoteLoadXlsx")) ) </div> |
RemoteSaveController.cs
C# |
コードのコピー
|
---|---|
public class RemoteSaveController : Controller { // GET: /<controller>/ public static List<Sale> SALES = Sale.GetData(50).ToList(); public ActionResult Index() { return View(SALES); } private const string FILE_PATH = "\\wwwroot\\uploadFile\\save.xlsx"; public JsonResult RemoteSaveFile([FlexSheetRequest]FlexSheetSaveRequest request) { var success = true; var error = ""; var app = GetService<IApplicationEnvironment>(); var savePath = app.ApplicationBasePath + 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 app = GetService<IApplicationEnvironment>(); var savePath = app.ApplicationBasePath + FILE_PATH; var name = Path.GetFileName(FILE_PATH); return File(new FileStream(savePath, FileMode.Open, FileAccess.Read), "application/msexcel", name); } public static T GetService<T>() where T : class { var serviceProvider = CallContextServiceLocator.Locator.ServiceProvider; return serviceProvider.GetService(typeof(T)) as T; } } |
RemoteSaving.cshtml
Razor |
コードのコピー
|
---|---|
@using C1MvcFSheetNew.Models; @model IEnumerable<sale> <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> @(Html.C1().FlexSheet().CssClass("flexSheet").Width("500px") .Height("700px").RemoteSave(Url.Action("RemoteSaveFile")) .OnClientRemoteSaved("onFileSaved") .AddBoundSheet(sheet => sheet.Bind(cv => cv.Bind(Model))) ) </div> |