Easyui datagrid数据导入Excel

很帅很低调 2017-12-26 10:37:09
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中写方法。怎么解决?求那一位大神帮帮,怎么改?
...全文
1196 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuhangit 2018-01-11
  • 打赏
  • 举报
回复
调用简单的话就直接用ashx,不然就做webservice接口
很帅很低调 2018-01-02
  • 打赏
  • 举报
回复
"application/vnd.ms-excel", fileName这个怎么写呢?还有就是前台怎么用ajax调用这个方法呢?
threenewbee 2017-12-26
  • 打赏
  • 举报
回复
asp.net里面用 Response.Write(ms)

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧