Dear Support,
Do you have a component for Blazor wasm application to upload excel file from the client side to a list of records, so it can be sent to the server for storage?
Regards,
Amjad.
|
@inject IJSRuntime jsRuntime
<div class="control-section">
<div class="control-wrapper">
<div id="spreadsheet"></div>
</div>
</div>
@code{
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await jsRuntime.InvokeAsync<object>("RenderSpreadsheet");
}
} |
|
<script>
function RenderSpreadsheet() {
var spreadsheet = new ej.spreadsheet.Spreadsheet({
allowSave: true,
openUrl: 'https://ej2services.syncfusion.com/production/web-services/api/spreadsheet/open',
saveUrl: 'https://ej2services.syncfusion.com/development/web-services/api/spreadsheet/save',
});
//Render initialized Spreadsheet component
spreadsheet.appendTo('#spreadsheet');
}
</script> |
|
public IActionResult Open(IFormCollection openRequest)
{
ExcelEngine excelEngine = new ExcelEngine();
IWorkbook workbook;
FileStream fs = System.IO.File.Open("./wwwroot/Sample1.xlsx", FileMode.Open);
workbook = excelEngine.Excel.Workbooks.Open(fs, ExcelOpenType.Automatic);
MemoryStream outputStream = new MemoryStream();
workbook.SaveAs(outputStream);
IFormFile formFile = new FormFile(outputStream, 0, outputStream.Length, "", "Sample1.xlsx"); // converting MemoryStream to IFormFile
OpenRequest open = new OpenRequest();
open.File = formFile;
fs.Close();
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() + "/wwwroot/Sample1.xlsx";
FileStream outputStream = new FileStream(filePath, FileMode.Create);
workbook.SaveAs(outputStream);
outputStream.Close();
return "Spreadsheet saved in server";
}
catch (Exception ex)
{
return "Failure";
}
}
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
public class CustomArgs
{
public string customValue { get; set; }
public string address { get; set; }
public int sheetIndex { get; set; }
} |