public void ProcessRequest(HttpContext context)
{
DataTable dt = new DataTable();
dt = Service.Excel();
string strFileName =context.Request.Params["excel"];
IWorkbook workbook = new HSSFWorkbook();
ISheet sheet = string.IsNullOrEmpty(strFileName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(strFileName);
//表头
IRow row = sheet.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
ICell cell = row.CreateCell(i);
cell.SetCellValue(dt.Columns[i].ColumnName);
HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle();
//居中显示
cellStyle.Alignment = HorizontalAlignment.Center;
//垂直居中
cellStyle.VerticalAlignment = VerticalAlignment.Center;
HSSFFont font = (HSSFFont)workbook.CreateFont();
font.FontHeightInPoints = 12;
font.FontName = "宋体";
font.IsBold = true;
cellStyle.SetFont(font);
cell.CellStyle = cellStyle;
}
//数据
int[] len = new int[dt.Columns.Count];
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow rows = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
ICell cell = rows.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString());
var lenTemp = dt.Rows[i][j].ToString().Length > dt.Columns[j].ColumnName.Length ? dt.Rows[i][j].ToString().Length : dt.Columns[j].ColumnName.Length;
if (lenTemp > len[j])
{
len[j] = lenTemp;
}
}
}
//自动设置列宽
for (int i = 0; i < len.Length; i++)
{
if (len[i] < 8)
{
len[i] = Convert.ToInt32(Math.Round(len[i] * 2.5));
}
else
{
len[i] = Convert.ToInt32(Math.Round(len[i] * 1.3));
}
sheet.SetColumnWidth(i, len[i] * 256);
}
//写入到客户端
MemoryStream ms = new MemoryStream(); //创建其支持存储区为内存的流
workbook.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
string fileName = strFileName + DateTime.Now.ToString("yyMMddHHmmssfff") + ".xls";
return File(ms, "application/vnd.ms-excel", fileName);
}
这是我仿写的一个Excel导入数据的方法,但是出现一个问题,别人用的是mvc架构,我是直接在aspx中写方法。怎么解决?求那一位大神帮帮,怎么改?