Я написал код, который экспортирует данные с веб-страницы, чтобы использовать EPPlus, которые я хочу повторно использовать несколько раз в моем проекте, поэтому я переместил код в свой класс.Перемещение кода в класс вызывает ошибку HttpException
Это прекрасно работает, когда в коде на странице, но когда я переместить его в своем классе я получаю следующее сообщение об ошибке на Response.Clear()
линии:
System.Web.HttpException (0x80004005): Response is not available in this context
Вот мой код
ExcelHelper Класс
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using OfficeOpenXml;
using OfficeOpenXml.Table;
namespace myClassLib
{
public class ExcelHelper : System.Web.UI.Page
{
public void exportExcel(DataTable myDataTable)
{
Response.Clear();
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Output.xlsx");
DataTable dt= myDataTable;
ExcelPackage pck = new ExcelPackage();
using(pck)
{
ExcelWorksheet wsDt = pck.Workbook.Worksheets.Add("Sheet1");
wsDt.Cells["A1"].LoadFromDataTable(dt, true, TableStyles.None);
int colNumber = 1;
foreach (DataColumn col in dt.Columns)
{
if (col.DataType == typeof(DateTime))
{
wsDt.Column(colNumber).Style.Numberformat.Format = "yyyy-mm-dd";
}
colNumber = colNumber + 1;
}
wsDt.Cells[wsDt.Dimension.Address].AutoFitColumns();
Response.BinaryWrite(pck.GetAsByteArray());
}
Response.Flush();
Response.End();
}
}
}
код для вызова класса
ExcelHelper myExcelHelper = new ExcelHelper();
myExcelHelper.exportExcel(myDataTable);
Любая помощь очень ценится
Вы должны избавиться от всех System.Web кода, связанного с вашего класса, если вы действительно хотите использовать его везде и передать необходимые значения свойств в качестве параметров метода –
Используете ли вы WebForms или MVC? Является ли этот код отдельным проектом или веб-проектом? В принципе, вы не можете получить доступ к объекту Response, поэтому нам нужно сначала определить другие вопросы. – ragerory
Извинения. используя webforms, код находится в отдельном проекте, но я правильно добавил ссылки, так как другие классы работают нормально. –