下面来演示一下导出操作
点击导出按钮,就会下载一个文件,然后即可导出
代码部分
控制器部分
public ActionResult ExportExcel()
{
var list = from tbGoodsDetail in myModel.GoodsDetail
join tbGoodsType in myModel.GoodsType on tbGoodsDetail.GoodsTypeID equals tbGoodsType.GoodsTypeID
join tbGoodsunit in myModel.GoodSunit on tbGoodsDetail.GoodsuntID equals tbGoodsunit.GoodsunitID
select new Goodsdetail
{
GoodsdetailID = tbGoodsDetail.GoodsdetailID,
GoodsTypeID = tbGoodsType.GoodsTypeID,
GoodsuntID = tbGoodsunit.GoodsunitID,
Goodsname = tbGoodsDetail.Goodsname,
Goodscodding = tbGoodsDetail.Goodscodding,
Goodsprice = tbGoodsDetail.Goodsprice,
Goodstype = tbGoodsType.Goodstype1,
Goodsunit = tbGoodsunit.Goodsunit1
};
//计数序列中的总条数
var totalRow = list.Count();
List<Goodsdetail> listGoodsdetail = list.ToList();
//==构建Excel
//1、创建工作簿 固定的写法
NPOI.SS.UserModel.IWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();//xls
//2、创建工作表
NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("工作表名称");
workbook.SetSheetName(0, "VIP信息");
//3、创建标题(行)
NPOI.SS.UserModel.IRow rowTitle = sheet.CreateRow(0);//0 行索引 第一行
rowTitle.HeightInPoints = 35;//第一行的行高
//3-2、创建单元格
NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
//3-3、单元格设置值
cell0.SetCellValue("商品信息");
//列合并
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 8));
// 4、创建表头行并设置字段
NPOI.SS.UserModel.IRow rowHeader = sheet.CreateRow(1);//索引 第二行
rowHeader.CreateCell(0).SetCellValue("序号");
rowHeader.CreateCell(1).SetCellValue("商品编码");
rowHeader.CreateCell(2).SetCellValue("商品名称");
rowHeader.CreateCell(3).SetCellValue("商品类别");
rowHeader.CreateCell(4).SetCellValue("商品单位");
rowHeader.CreateCell(5).SetCellValue("商品价格");
//5.遍历数据
for (int i = 0; i < listGoodsdetail.Count; i++)
{
//标题和表头已经占了两行
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 2);
row.HeightInPoints = 22;//设置行高
//创建列,并设置值
row.CreateCell(0).SetCellValue(i + 1);//序号
row.CreateCell(1).SetCellValue(listGoodsdetail[i].Goodscodding);
row.CreateCell(2).SetCellValue(listGoodsdetail[i].Goodsname);
row.CreateCell(3).SetCellValue(listGoodsdetail[i].Goodstype);;
row.CreateCell(4).SetCellValue(listGoodsdetail[i].Goodsunit);
row.CreateCell(5).SetCellValue((double)listGoodsdetail[i].Goodsprice);;
}
//==6、设置列宽为自动适应
for (int i = 0; i < sheet.GetRow(1).Cells.Count; i++)
{
sheet.AutoSizeColumn(i);//这列自动适应最的数据单元格的宽度
sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 12 / 10);
}
//========把创建好的Excel输出到浏览器
string fileName = "商品信息" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".xls";
//把Excel转化为流输出
MemoryStream BookStream = new MemoryStream();//定义流
workbook.Write(BookStream);//将工作薄写入流
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)
//返回回去不是json数据是file文件
return File(BookStream, "application/vnd.ms-excel", fileName);//文件名称
}
记得引进NPOI