Hello,
I have a form with different text fields and dropdown lists.
after entering the information, I have a button that allows me to validate the creation of this new element.
this button must call an action of my controller which is used to generate an excel file where I must call the template of this file from my local files and display the information entered in the fields that correspond in the excel file
I am using npoi library (c #) in back and telerik ui for asp.net mvc
It would be much appreciated if you can help me on this.
Thanks for replying
3 Answers, 1 is accepted
Hello Wassim,
Based on the provided details I am not sure what the issue is. Is the form used a Telerik UI for ASP.NET MVC Form or a regular HTML form? Is the issue related to submitting the data? Also, I am not familiar with the library of choice for the backend processing and Excel file generation, but once you have the form fields submitted to the action method you should be able to set the passed values in the respective template. If you have issues using the npoi library you can check the following StackOverflow thread for guidance.
Should you have any Telerik UI for ASP.NET MVC related questions feel free to reach out.
Regards,
Aleksandar
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
Hello Aleksandar,
in the same context, I tried to call a method action of my controller to generate an excel file after clicking on a button
.ToolBar(toolbar =>
{
toolbar.Custom().Text("Create").IconClass("fa fa-file-excel").Action("GenerateExcelAction", "GenerateExcelController").HtmlAttributes(new { @class = "btn btn-outline-primary" });
})
using NPOI.HSSF.UserModel;
using System.IO;
public ActionResult GenerateExcelAction()
{
try
{
// Opening the Excel template...
FileStream fs =
new FileStream(Server.MapPath(@"\Content\Templates\myFile.xls"), FileMode.Open, FileAccess.Read);
// Getting the complete workbook...
HSSFWorkbook templateWorkbook = new HSSFWorkbook(fs, true);
// Getting the worksheet by its name...
HSSFSheet shhet1= (HSSFSheet)templateWorkbook.GetSheet("sheet1");
HSSFRow dataRow = (HSSFRow)sheet1.GetRow(3);
dataRow .GetCell(5).SetCellValue("some text");
// Forcing formula recalculation...
sheet1.ForceFormulaRecalculation = true;
MemoryStream ms = new MemoryStream();
// Writing the workbook content to the FileStream...
templateWorkbook.Write(ms);
// Sending the server processed data back to the user computer...
return File(ms.ToArray(), "application/vnd.ms-excel", "newFile.xls");
}
catch (Exception ex)
{
ex.Message.ToString();
return RedirectToAction("Index");
}
}
}
this method works fine by generating me an excel but if I do it otherwise by calling a js ajax function to pass json data .. it enters the method and nothing happens
.ToolBar(toolbar =>
{
toolbar.Custom().Text("Create").IconClass("fa fa-file-excel").HtmlAttributes(new { id = "createExcel", @class = "btn btn-outline-primary", onclick = "generateExcel();" });
})
function generateExcel() {
//var modelData = { "modelData": "dt" };
$.ajax({
url: '/GenerateExcelController/GenerateExcelAction',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ modelData: "dttt" }),
success: function (data) {
alert("succeedd");
},
error: function (data) {
alert("KO");
}
});
}
going through the 2nd method, it recovers the data and goes through the method without returning the excel file to me like the first methode
something missing ??
Any help please?
Hi Wassim,
You cannot return a file for download via an AJAX call. I would suggest reviewing the SO threads linked below that discusses how to download a file after an ajax call is made:
https://stackoverflow.com/questions/16670209/download-excel-file-via-ajax-mvc
https://stackoverflow.com/questions/54896957/download-a-file-through-ajax-request-in-asp-net-mvc
I hope this helps.
Regards,
Aleksandar
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.