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>
|
|