Файл сгенерировать и скачать угловой 7, dotnet core 2 - PullRequest
0 голосов
/ 04 марта 2019

У меня есть базовое приложение 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

Код все еще находится в стадии разработки, поэтому следует учитывать любые неиспользуемые переменные и т. Д.

Основная идея заключается в том, что у меня есть массив строк, янужно будет загрузить этот массив в файл Excel / CSV.Мы используем микро сервис арки через докер.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 марта 2019

Это не хеш.Это байтовый массив.Поэтому, если вы хотите скачать этот файл, просто перенаправьте пользователя на этот адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...