У меня есть базовое приложение angular / dotnet, в котором мне нужно сгенерировать файл excel / csv на сервере, а затем загрузить его.
Пробные тонны решений, включая epplus.core, но, похоже, ни одно из них не возвращает файл (загрузить).По какой-то причине я всегда получаю хэшированное значение в своем сетевом ответе.
Пользовательский интерфейс:
employeesDownload(account: string, sid: string): Observable<any> {
let params = new HttpParams();
params = params.set("sid", sid);
let headers = new HttpHeaders();
return this.http.get(`em/api/v1/employees/${account}/download`, { headers:headers, params: params })
.pipe(
map((response: any) => response)
);
}
Сервер:
[HttpGet("{account}/download")]
public async Task<IActionResult> EmployeesDownloadResult(string sid)
{
int _sid = Convert.ToInt32(sid);
if (_sid > 0)
{
//procedure call by sid
StoredProcedureResponse legacyResponse = await this._legacyUdtApiClient.ApiV1EmployeeGetImportedResultAsync(_sid);
if (legacyResponse.ReturnValue.Equals("OK", StringComparison.OrdinalIgnoreCase))
{
DataSet result = JsonConvert.DeserializeObject<DataSet>(legacyResponse.OutputParameter.ToString());
// DataSet To CSV conversion needs to be tested
string CSV = ConversionHelper.ConvertWorkersDataSetToCSV(result);
string[] strings = CSV.Split(',');
byte[] file1;
byte[] bytes;
MemoryStream stream = new MemoryStream();
using (ExcelPackage package = new ExcelPackage(stream))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee");
//First add the headers
worksheet.Cells[1, 1].Value = "ID";
worksheet.Cells[1, 2].Value = "Name";
worksheet.Cells[1, 3].Value = "Gender";
worksheet.Cells[1, 4].Value = "Salary (in $)";
//Add values
worksheet.Cells["A2"].Value = 1000;
worksheet.Cells["B2"].Value = "Jon";
worksheet.Cells["C2"].Value = "M";
worksheet.Cells["D2"].Value = 5000;
worksheet.Cells["A3"].Value = 1001;
worksheet.Cells["B3"].Value = "Graham";
worksheet.Cells["C3"].Value = "M";
worksheet.Cells["D3"].Value = 10000;
worksheet.Cells["A4"].Value = 1002;
worksheet.Cells["B4"].Value = "Jenny";
worksheet.Cells["C4"].Value = "F";
worksheet.Cells["D4"].Value = 5000;
bytes = package.GetAsByteArray();
}
HttpContext.Response.Headers.Add("Content-Disposition", "inline; filename=[filename]");
return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "test.xlsx");
}
}
else
throw new Exception($"download failed");
return null;
}
}
Сетевой http-ответ:
![enter image description here](https://i.stack.imgur.com/Ya9SM.png)
Код все еще находится в стадии разработки, поэтому следует учитывать любые неиспользуемые переменные и т. Д.
Основная идея заключается в том, что у меня есть массив строк, янужно будет загрузить этот массив в файл Excel / CSV.Мы используем микро сервис арки через докер.Любая помощь будет принята с благодарностью.