I have looked over many of the posts on using the APS.Net Core Spreadsheet control and have tested the solutions that have been provided.
However they are all for MVC and not Razor Pages.
I am having trouble in converting the MBVC examples over to Razor Pages, not sure on the openurl
Sample.cshtml
<button class="e-btn" onclick="saveToServer()">Save Back to Server</button>
<ejs-spreadsheet id="spreadsheet" openUrl="/Sample?handler=Open" saveUrl="/Sample?handler=Save" created="onCreated">
<e-spreadsheet-sheets>
<e-spreadsheet-sheet>
<e-spreadsheet-ranges>
<e-data-manager url="/Files/Sample1.xlsx" adaptor="UrlAdaptor" crossdomain=true></e-data-manager>
</e-spreadsheet-ranges>
</e-spreadsheet-sheet>
</e-spreadsheet-sheets>
</ejs-spreadsheet>
<script>
function onCreated() {
var spreadsheetObj = ej.base.getComponent(document.getElementById('spreadsheet'), 'spreadsheet');
var request = new XMLHttpRequest();
request.responseType = "blob";
request.onload = () => {
var file = new File([request.response], "Sample1.xlsx");
spreadsheetObj.open({ file: file });
}
request.open("GET", "/Files / " + "Sample1.xlsx");
request.send();
}
function saveToServer() {
var spreadsheetObj = ej.base.getComponent(document.getElementById('spreadsheet'), 'spreadsheet');
spreadsheetObj.save();
}
</script>
Sample.cshtml.cs
public IActionResult Open(IFormCollection openRequest)
{
OpenRequest open = new OpenRequest();
open.File = openRequest.Files[0];
return Content(Workbook.Open(open));
}
public string Save(SaveSettings saveSettings)
{
ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
try
{
// Convert Spreadsheet data as Stream
Stream fileStream = Workbook.Save<Stream>(saveSettings);
IWorkbook workbook = application.Workbooks.Open(fileStream);
var filePath = Startup._env.ContentRootPath.ToString() + "/Files/Sample1.xlsx";
FileStream outputStream = new FileStream(filePath, FileMode.Create);
workbook.SaveAs(outputStream);
return "Spreadsheet saved in server";
}
catch (Exception ex)
{
return "Failure";
}
}