文件的导入

导出数据:数据大部分都是表格形式,所以经常需要导入到Excel中,文件的导入导出利用了浏览器的文件下载功能,但是都用window.open打开新窗口来下载,在本页面打开,浏览器很难识别到需要下载的文件
首先要联表查询需要导出的数据,有两种msoffice excel 、NPOI(JAVA POI)选择,通常我们都使用后者进行导出操作
1、 创建工作簿
NPOI.HSSF.UserModel.HSSFWorkbook workbook= new NPOI.HSSF.UserModel.HSSFWorkbook();
2、创建工作表
NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet();
修改工作表名称
自定义名称.SetSheetName(0, “工作表名称”);
3、设置表标题
1).创建行
NPOI.SS.UserModel.IRow rowTitle = sheet1.CreateRow(0);//下标
rowTitle.HeightInPoints = 35;//行高 HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍
2).创建单元格
NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
3).单元格设置值
string strTitle = “单元格标题”;
cell0.SetCellValue(strTitle);
4).合并单元格
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6));// 0, 0, 0, 6代表第一行合并6个单元格
5).设置单元格样式
NPOI.SS.UserModel.ICellStyle
cellStyle_Title=workbook.CreateCellStyle();
cellStyle_Title.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellStyle_Title.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
NPOI.SS.UserModel.IFont font_title = workbook.CreateFont();//声明字体
ont_title.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;//设置字体颜
font_title.Boldweight=(short)NPOI.SS.UserModel.FontBoldWeight.Bold;//加粗
font_title.FontHeightInPoints = 18;//字体大小
cellStyle_Title.SetFont(font_title);//设置单元格字体
cell0.CellStyle = cellStyle_Title;//设置单元格样式
4、设置表头
1).创建一行 索引
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(1);//给sheet添加第一行的
2).创建单元格 并设置值
row1.CreateCell(0).SetCellValue(“序号”);
row1.CreateCell(1).SetCellValue(“旅客姓名”);
row1.CreateCell(2).SetCellValue(“证件号码”);
row1.CreateCell(3).SetCellValue(“联系人电话”);
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;//垂直居中
4).设置背景颜色
cellStyle_header.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;
cellStyle_header.FillForegroundColor=NPOI.HSSF.Util.HSSFColor.Aqua.Index;
5).设置边框线为实线
cellStyle_header.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle_header.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
6).设置字体
NPOI.SS.UserModel.IFont font_header = workbook.CreateFont();//声明字体
font_header.Boldweight=(short)NPOI.SS.UserModel.FontBoldWeight.Bold;//加粗
font_header.FontHeightInPoints = 10;//字体大小
cellStyle_header.SetFont(font_header);//加入单元格
//给单元格设置样式 循环
for (int i = 0; i < row1.Cells.Count; i++)
{ row1.GetCell(i).CellStyle = cellStyle_header;}
5、遍历查询到的数据,设置表格数据
1).创建数据内部部分 单元格样式
NPOI.SS.UserModel.ICellStyle cellstyle_value = workbook.CreateCellStyle();//声明样式
cellstyle_value.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellstyle_value.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
2).遍历数据,创建数据部分行列
for (int i = 0; i < list.Count; i++)
{
1.创建行
NPOI.SS.UserModel.IRow row = sheet1.CreateRow(2 + i);//标题和表头已经占了两行
row.Height = 22 * 20;//设置行高
2.创建列,并设置值
row.CreateCell(0).SetCellValue(i + 1);//序号
row.CreateCell(1).SetCellValue(list[i].passengerName);
row.CreateCell(4).SetCellValue(list[i].certificatesCode);
row.CreateCell(6).SetCellValue(list[i].contactPhone);
3.给每个单元格添加样式
for (int j = 0; j < row.Cells.Count; j++)
{row.GetCell(j).CellStyle = cellstyle_value;}
6,设置列宽为自动适应
for (int i = 0; i < sheet1.GetRow(1).Cells.Count; i++)
{sheet1.AutoSizeColumn(i);
sheet1.SetColumnWidth(i, sheet1.GetColumnWidth(i) * 17 / 10); }
7、 把创建好的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(偏移量,游标位置)
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、付费专栏及课程。

余额充值