2020-08-09

文献种类:专题技术总结文献;
开发工具与关键技术: JAVASCRIPT
作者: ;年级:2019 ;撰写时间:2020 年 8 月 6 日

文件的导出

一、 文件的LK导出
1、 使用模板的方式导出Excel
先插入模板
在这里插入图片描述

①创建工作簿和工作表
NPOI.HSSF.UserModel.HSSFWorkbookworkbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
工作表
NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet(“旅客信息”);
NPOI.SS.UserModel.ISheet sheet1 = workbook.CreateSheet();
workbook.SetSheetName(0, “旅客信息”);//修改工作表名称
②设置表标题
创建行
NPOI.SS.UserModel.IRow rowTitle = sheet1.CreateRow(0);//下标
rowTitle.HeightInPoints = 35;//行高 HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍
创建单元格
NPOI.SS.UserModel.ICell cell0 = rowTitle.CreateCell(0);
单元格设置值
string strTitle = “旅客数据”;
if (!string.IsNullOrEmpty(startEndDate))
{
strTitle += " " + startEndDate;
}
cell0.SetCellValue(strTitle);
合并单元格
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6));
设置单元格样式
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();//声明字体
font_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;//设置单元格样式
设置表头
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(1);//给sheet添加第一行的头部标题
row1.Height = 22 * 20;//设置行高
创建单元格 并设置值
row1.CreateCell(0).SetCellValue(“序号”);
row1.CreateCell(1).SetCellValue(“旅客姓名”);
row1.CreateCell(2).SetCellValue(“旅客类型”);
row1.CreateCell(3).SetCellValue(“证件类型”);
row1.CreateCell(4).SetCellValue(“证件号码”);
row1.CreateCell(5).SetCellValue(“联系人姓名”);
row1.CreateCell(6).SetCellValue(“联系人电话”);
创建表头的样
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.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;
}
遍历查询到的数据,设置表格数据
创建数据内部部分 单元格样式
NPOI.SS.UserModel.ICellStyle cellstyle_value = workbook.CreateCellStyle();//声明样式
cellstyle_value.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;//水平居中
cellstyle_value.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;//垂直居中
设置边框线为实线
cellstyle_value.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellstyle_value.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellstyle_value.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellstyle_value.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
遍历数据,创建数据部分行列
for (int i = 0; i < list.Count; i++)
{
创建行
NPOI.SS.UserModel.IRow row = sheet1.CreateRow(2 + i);//标题和表头已经占了两行
row.Height = 22 * 20;//设置行高
创建列,并设置值
row.CreateCell(0).SetCellValue(i + 1);//序号
row.CreateCell(1).SetCellValue(list[i].passengerName);
row.CreateCell(2).SetCellValue(list[i].passengerType);
row.CreateCell(3).SetCellValue(list[i].certificatesType);
row.CreateCell(4).SetCellValue(list[i].certificatesCode);
row.CreateCell(5).SetCellValue(list[i].contactName);
row.CreateCell(6).SetCellValue(list[i].contactPhone);
给每个单元格添加样式
for (int j = 0; j < row.Cells.Count; j++)
{
row.GetCell(j).CellStyle = cellstyle_value;
}
}
设置列宽为自动适应
for (int i = 0; i < sheet1.GetRow(1).Cells.Count; i++)
{
sheet1.AutoSizeColumn(i);
sheet1.SetColumnWidth(i, sheet1.GetColumnWidth(i) * 17 / 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(偏移量,游标位置)
return File(BookStream, “application/vnd.ms-excel”, fileName); // 文件类型/文件名称/
最后成型的样子
在这里插入图片描述

二、导出AR用户数据
1、读取模板
在这里插入图片描述

获取模板的文件路径
string templateFilePath = Server.MapPath("~/Document/ARDataTemplate.xls");
判断文件是否存在
if (!System.IO.File.Exists(templateFilePath))
{
return Content(“导入失败,无法找到导入模板,请联系网站管理人员”);
}
2、使用NPOI打开模板Excel
使用文件打开模板文件
FileStream fileSteam = new FileStream(templateFilePath, FileMode.Open);
把文件流转为工作簿
NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new NPOI.HSSF.UserModel.HSSFWorkbook(fileSteam);

3、打开模板所在第一个工作表
NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0);
NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle();

4、设置标题,如果筛选时间段不为空就拼接上筛选时间段
if (!string.IsNullOrEmpty(startEndDate))
{
NPOI.SS.UserModel.IRow rowTitle = sheet.GetRow(0);
rowTitle.GetCell(0).SetCellValue("订单数据 " + startEndDate);
}

5、往模板中填充数据
设置数据单元格的样式
水平垂直居中对齐
style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
设置边框为实线
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
开始填充数据
int index = 2;//目前这个模板数据开始填充数据的行索引为2
遍历查询出的数据 填充
for (int i = 0; i < list.Count(); i++)
{
NPOI.SS.UserModel.IRow row = sheet.CreateRow(index); ;//给sheet添加一行
row.Height = 22 * 20;//设置行高
设置单元格数据
row.CreateCell(0).SetCellValue(i + 1);
row.CreateCell(1).SetCellValue(list[i].orderNo);
row.CreateCell(2).SetCellValue(list[i].payTime.ToString());
row.CreateCell(3).SetCellValue(list[i].totalPrice.ToString());
row.CreateCell(4).SetCellValue(list[i].agencyFee.ToString());
row.CreateCell(5).SetCellValue(list[i].payMoney.ToString());
row.CreateCell(6).SetCellValue(list[i].userGroup.ToString());
row.CreateCell(7).SetCellValue(list[i].jobNumber.ToString());
row.CreateCell(8).SetCellValue(list[i].PNR.ToString());
设置单元格样式
for (int j = 0; j < row.Cells.Count; j++)
{
row.GetCell(j).CellStyle = style;
}
index++;
}

以流的方式返回
string fileName = “订单信息” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) + “.xls”;
把Excel转化为流,输出
MemoryStream BookStream = new MemoryStream();//定义内存流excelBookTemplate.Write(BookStream);//将工作薄写入内存流
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度
return File(BookStream, “application/vnd.ms-excel”, fileName); // 文件类型/文件名称/
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值