How to handle custom error message on importing
Description
This knowledge base explains how to handle custom error message on excel importing in Spreadsheet.
Solution
It can be achievable by using ‘actionBegin’ client-side event and ‘alert()’ client-side method.
In the below scenario, incorrect file path error has to be handled on importing using try-catch and on exception throws, the custom message is returned to Spreadsheet (here, returned ‘File not found.’ message).
JavaScript
HTML
<button id="importBtElem">Import</button> <div id="FlatSpreadsheet"></div>
JS
$(function () {
$("#FlatSpreadsheet").ejSpreadsheet({
importSettings: {
importMapper: "api/Spreadsheet/Import"
},
actionBegin: "onActionBegin"
});
$("#importBtElem").on("click", function () {
var ssObj = $("#FlatSpreadsheet").data("ejSpreadsheet");
ssObj.import({});//Import request to server.
});
});
function onActionBegin(args) {
if (args.reqType == "importing") {
this.alert(args.data); //Alert the returned message in Spreadsheet.
args.cancel = true;
}
}
WEBAPI
[AcceptVerbs("Post")]
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare)]
public HttpResponseMessage Import()
{
try
{
ImportRequest importRequest = new ImportRequest();
//Trying to open incorrect file path.
string filePath = HttpContext.Current.Server.MapPath("SampleExcel.xlsx");
FileStream fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read);
importRequest.FileStream = fileStream;
string spreadsheetData = Spreadsheet.Open(importRequest);
fileStream.Close();
return new HttpResponseMessage() { Content = new StringContent(spreadsheetData, Encoding.UTF8, "text/plain") };
}
catch (Exception ex)
{
return new HttpResponseMessage() { Content = new StringContent("File not found.", Encoding.UTF8, "text/plain") };
}
}
MVC
CSHTML
<button id="importBtElem">Import</button>
@(Html.EJ().Spreadsheet<object>("FlatSpreadsheet")
.ImportSettings(import =>
{
import.ImportMapper("Home/Import");
})
.ClientSideEvents(eve => eve.ActionBegin("onActionBegin"))
)
<script type="text/javascript">
$(function () {
$("#importBtElem").on("click", function () {
var ssObj = $("#FlatSpreadsheet").data("ejSpreadsheet");
ssObj.import({});//Import request to server.
});
});
function onActionBegin(args) {
if (args.reqType == "importing") {
this.alert(args.data); //Alert the returned message in Spreadsheet.
args.cancel = true;
}
}
</script>
CONTROLLER
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Import(ImportRequest importRequest)
{
try
{
//Trying to open incorrect file path.
string filePath = Server.MapPath("SampleExcel.xlsx");
FileStream fileStream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
importRequest.FileStream = fileStream;
string spreadsheetData = Spreadsheet.Open(importRequest);
fileStream.Close();
return Content(spreadsheetData);
}
catch (Exception ex)
{
return Content("File not found.");
}
}
ASP
ASPX
<button id="importBtElem" type="button">Import</button>
<ej:Spreadsheet ID="FlatSpreadsheet" runat="server">
<ImportSettings ImportMapper="SpreadsheetHandler.ashx" />
<ClientSideEvents ActionBegin="onActionBegin" />
</ej:Spreadsheet>
<script type="text/javascript">
$(function () {
$("#importBtElem").on("click", function () {
var ssObj = $("#" + '<% =FlatSpreadsheet.ClientID %>').data("ejSpreadsheet");
ssObj.import({});//Import request to server.
});
});
function onActionBegin(args) {
if (args.reqType == "importing") {
this.alert(args.data); //Alert the returned message in Spreadsheet.
args.cancel = true;
}
}
</script>
ASHX
public void ProcessRequest(HttpContext context)
{
try
{
ImportRequest importRequest = new ImportRequest();
//Trying to open incorrect file path.
string filePath = HttpContext.Current.Server.MapPath("SampleExcel.xlsx");
FileStream fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read);
importRequest.FileStream = fileStream;
string spreadsheetData = Spreadsheet.Open(importRequest);
fileStream.Close();
context.Response.Write(spreadsheetData);
}
catch (Exception ex)
{
context.Response.Write("File not found.");
}
}
The below screenshot represents the output of the above code example.

Figure: Spreadsheet with custom alert message