Я пытаюсь экспортировать несколько наборов данных в Excel в приложении Angular 6.Для этого я использую XLSX и File-save, как указано в этом примере: https://medium.com/@madhavmahesh/exporting-an-excel-file-in-angular-927756ac9857
Проблема в том, что поля могут постоянно меняться, поэтому мне нужно что-то динамическое (не нужно указывать столбецимена).Для этого я нашел очень хороший пример: Привязка данных Json к таблице в mvc 4
Однако я не получаю данные в правильном формате.Мне нужно что-то вроде массива массива.Я предполагаю, что тип возвращаемого значения должен быть async Task<JsonResult>
в этом случае, но не уверен, как заставить это работать.Я прилагаю два изображения - результата я получаю
и ожидаемый результат
Вот код отОбразец цитируется.Хранимая процедура вызова GetMyData использует SqlAdapter, и нет необходимости указывать имена полей
public JsonResult GetValue()
{
JsonResult json = new JsonResult();
DataSet ds = GetMyData();
/*LoadDoctordetailsNew is method where i get data from database and convert
to dataset.It returns a dataset*/
string returnData = GetJson(ds.Tables[0]);
json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
json.Data = returnData;
return json;
}
public static string GetJson(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows =
new List<Dictionary<string, object>>();
Dictionary<string, object> row = null;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
public static DataSet GetMyData()
{
try
{
using (SqlConnection connection = Connection.GetConnection())
{
SqlDataAdapter da = new SqlDataAdapter("dbo.MySQLStoredproc", connection);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
catch (Exception ex)
{
throw;
}
}
Пожалуйста, руководство!
PS
Этот метод с использованиемЧудной .Он возвращает данные в желаемом формате (Array of Array), но в Object мы должны указать имена столбцов, которые будут жестко заданы и , поэтому я не могу использовать
public static IEnumerable<Object> GetMyData()
{
var strQuery = @"[dbo].[Myproc]";
IEnumerable< Object > items = new List<Object>(0);
var p = new DynamicParameters();
using (SqlConnection con = Connection.GetConnection())
{
items = con.Query<Object>(strQuery, param: p, commandTimeout: 120, commandType: System.Data.CommandType.StoredProcedure);
}
return items;
}
Звонок с контроллера MVC
[HttpPost]
public async Task<JsonResult> SelectMyData()
{
var task = Task.Run(() => Request.GetMyData());
var retData = await task;
return new JsonResult
{
ContentType = "application/json",
Data = retData,
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
MaxJsonLength = int.MaxValue
};
}