页面导入

一:
注:引用外部插件NPOI,引用方式有两种:
1、连网的情况下在引用=>右键=.>管理NUGET程序包直接安装

2、在bin文件夹中提取到NPOI.dll,然后引用

二:
1、构建导入模态框:
2、下载模板(在页面打开具体某个文件则会调用window.open()方法的属性)
例://下载模板
function downImportTemplate(){
window.open("@Url.Content("~/SchoolInfoManage/Student/DownImportTemplate")");//方法用于打开一个新的浏览器窗口或查找一个已命名的窗口}

3、导入数据
(1)获取E xcel表格数据,提取文件。如:
4、导出数据
(1)、查询数据
(2)、利用NPOI创建工作簿
NPOI.SS.UserModel.IWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
(3)、创建工作表(create 创建)
NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet(“工作表名字”)
(4)、创建标题(行)
NPOI.SS.UserModel.IRow rowTitle = sheet.CreateRow(0);//0 行索引 第一行
rowTitle.HeightInPoints = 35;
(5)、创建单元格
NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
cell0.SetCellValue(“学生信息”);//单元格设置值
(6)、创建表头(行)
例:
NPOI.SS.UserModel.IRow rowHeader = sheet.CreateRow(1);//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(“学院”);
rowHeader.CreateCell(6).SetCellValue(“专业”);
rowHeader.CreateCell(7).SetCellValue(“年级”);
rowHeader.CreateCell(8).SetCellValue(“班级”);

数据:
for (int i = 0; i < listStudent.Count; i++)
{
//第一行是标题,第二行是表头,数据从第三行开始(i + 2)
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 2);
row.HeightInPoints = 22;//设置行高
row.CreateCell(0).SetCellValue(i + 1);
row.CreateCell(1).SetCellValue(listStudent[i].studentNumber);
row.CreateCell(2).SetCellValue(listStudent[i].studentName);
row.CreateCell(3).SetCellValue(listStudent[i].studentIDNum);
row.CreateCell(4).SetCellValue(listStudent[i].studentSex);
row.CreateCell(5).SetCellValue(listStudent[i].academeName);
row.CreateCell(6).SetCellValue(listStudent[i].specialtyName);
row.CreateCell(7).SetCellValue(listStudent[i].gradeName);
row.CreateCell(8).SetCellValue(listStudent[i].className);

            //给每个单元格添加样式
            for (int j = 0; j < row.Cells.Count; j++)
            {
                row.GetCell(j).CellStyle = cellStyle_value;
            }
        }

(7)、设置Excel表格样式
1、标题样式设置(需要合并单元格)
(0:行的开始索引,0:行的结束索引,0:列的开始索引,8:列的结束索引)
sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 8));//合并单元格
合并第一行的开始索引就是(0,0),结束索引就是(0,8)
2、创建单元格样式
NPOI.SS.UserModel.ICellStyle cellStyle_Title = workbook.CreateCellStyle();

字体居中:(Alignment:水平,VerticalAlignemt:垂直)
cellStyle_Title.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; //水平居中
cellStyle_Title.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center 垂直对齐

设置背景颜色:
cellStyle_Title.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;//背景填充
cellStyle_Title.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Aqua.Index//背景填充蓝色

设置字体:
NPOI.SS.UserModel.IFont font_title = workbook.CreateFont();

设置字体颜色:
font_title.Color = NPOI.HSSF.Util.HSSFColor.White.Index;//字体白色

设置字体加粗:
font_title.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;//加粗-旧版本
font_title.IsBold = true;//新版版本的字体加粗写法

设置字体大小:
font_title.FontHeightInPoints = 13;

样式应用到标题:
cellStyle_Title.SetFont(font_title);

单元格等于声明出来的单元格样式:
cell0.CellStyle = cellStyle_Title;

设置边框:
cellStyle_Title.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_Title.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_Title.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_Title.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cell0.CellStyle = cellStyle_Title;

3、表头样式设置
//创建表头的样式
NPOI.SS.UserModel.ICellStyle cellStyle_header = workbook.CreateCellStyle();//声明样式
cellStyle_header.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中cellStyle_header.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
cellStyle_header.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;//设置背景填充cellStyle_header.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Aqua.Index//设置背景填充颜色

      //设置边框线为实线
      cellStyle_header.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
     cellStyle_header.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
     cellStyle_header.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
     cellStyle_header.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

      //设置字体
      NPOI.SS.UserModel.IFont font_header = workbook.CreateFont();//声明字体
     font_header.Color = NPOI.HSSF.Util.HSSFColor.White.Index;//字体颜色
     font_header.IsBold = true;//加粗
     font_header.FontHeightInPoints = 10;//字体大小
     cellStyle_header.SetFont(font_header);//加入单元格

// 给rowHeader单元格设置样式 循环应用到单元格(多个单元格要用for循环,遍历获取样式)
for (int i = 0; i < rowHeader.Cells.Count; i++)
{
rowHeader.GetCell(i).CellStyle = cellStyle_header;
}

4、数据单元格样式设置
(1).创建数据单元格的样式
NPOI.SS.UserModel.ICeIIStyle cellStyle_value = workbook.CreateCellStyle();
//水平居中
cellStyle_value.Alignment = NOPI.SS.UserModel.HorizontalAignment.Center;
//垂直居中
cellStyle_value.Verticalignment = NPOI.SS.UserModel.VerticalAlignment.Center

(2).设置边框样式
cellStyle_value.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_value.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_value.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_value.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;

数据
for (int i = 0; i < listStudent.Count; i++)
{
NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 2);//1 行索引 第二行
row.HeightInPoints = 22;//设置行高
row.CreateCell(0).SetCellValue(i + 1);
row.CreateCell(1).SetCellValue(listStudent[i].studentNumber);
row.CreateCell(2).SetCellValue(listStudent[i].studentName);
row.CreateCell(3).SetCellValue(listStudent[i].studentIDNum);
row.CreateCell(4).SetCellValue(listStudent[i].studentSex);
row.CreateCell(5).SetCellValue(listStudent[i].academeName);
row.CreateCell(6).SetCellValue(listStudent[i].specialtyName);
row.CreateCell(7).SetCellValue(listStudent[i].gradeName);
row.CreateCell(8).SetCellValue(listStudent[i].className);

//给每个单元格添加样式
            for (int j = 0; j < row.Cells.Count; j++)
            {
                row.GetCell(j).CellStyle = cellStyle_value;
            }

}

//列宽自适应
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”;
System.IO.MemoryStream BookStream = new System.IO.MemoryStream();//定义流
workbook.Write(BookStream);//将工作薄写入流
BookStream.Seek(0, System.IO.SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)
return File(BookStream, “application/vnd.ms-excel”, fileName); // 文件类型/文件名称/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值