Во время миграции. 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. Кто-нибудь знает, помогите мне, если существует какая-либо альтернативная функция?