Response.OutputStream не работает в ядре веб-API Asp. net. Есть ли ему альтернатива? - PullRequest
0 голосов
/ 08 мая 2020

Во время миграции. NET Core Response.OutputStream не работает должным образом. Я использую следующий код.

public void GenerateExcelFromDatatable(DataTable excelTable, string fileName)
{
    var myLogger = new Logger();
    var a = 0;
    var b = 0;
    try
    {
        DataTable stringTable = new DataTable();
        string myExcelFileName = "ExcelFile.xlsx";
        if ((fileName != null) && (fileName != string.Empty))
        {
            myExcelFileName = fileName;
        }
        foreach (DataColumn dc in excelTable.Columns)
        {
            stringTable.Columns.Add(dc.ColumnName, typeof(string));

        }

        for (int i = 0; i < excelTable.Rows.Count; i++)
        {
            a = i;
            DataRow myRow = stringTable.NewRow();
            for (int j = 0; j < excelTable.Columns.Count; j++)
            {
                b = j;
                string x = string.Empty;
                x = Convert.ToString(excelTable.Rows[i][j]);
                if (x != null && x != string.Empty)
                {
                    // myRow[j] = MeasureBL.DecodeFrom64(x);

                    myRow[j] = AesHelper.Decrypt256(x);
                }

            }
            stringTable.Rows.Add(myRow);
        }

        //var dataRow = stringTable.AsEnumerable().Where(x => x.Field<string>("Physician NPI") == "1528286911").ToList();
        // var NPIMatchingRecord = getNPIMatchingRecordFromDataTable(stringTable,CurrentUser.UserId);


        using (XLWorkbook wb = new XLWorkbook())
        {
            wb.Worksheets.Add(stringTable, "MIPS Excel Data");

            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "";
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + myExcelFileName + ";");
            using (MemoryStream MyMemoryStream = new MemoryStream())
            {
                wb.SaveAs(MyMemoryStream);
                MyMemoryStream.WriteTo(Response.OutputStream);
                Response.Flush();
                Response.End();
            }
        }
    }
    catch (Exception ex)
    {
        myLogger.LogError("Error in Measure Controller:GenerateExcelFromDatatable() FileName:[" + fileName + "] of Row:[" + Convert.ToString(a) + "] and Column:[" + Convert.ToString(b) + "]");
    }
}

В приведенном выше коде я исправил проблемы с Response.AddHeader и оставшимися изменениями свойств Reponse. Кто-нибудь знает, помогите мне, если существует какая-либо альтернативная функция?

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