对Excel表格数据的导出

一:有Excel文件模板的导出
(1)判断模板文件是否存在
1.先通过Server.MapPath() 将相对的路径转为实际的物理路径
2.然后在通过IO流判断文件是否存在 例:System.IO.File.Exists()
(2)使用文件流打开模板文件System.IO.File.Open()
1.打开Excel模板,得到一个工作簿 例:NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(templateStream);
2.通过GetSheetAt(0)获取第一个工作表 NumberOfSheets判断有没有工作表
3. PhysicalNumberOfRows 获取的是物理行数,也就是不包括那些空行(隔行)的情况。
4. 通过CreateCellStyle().构建单元格样式
例:style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;水平居中
style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;垂直居中
5.设置边框为实线 例:style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
6.通过遍历循环填充查询出来的数据
(3)以流的方式返回
例:String name=”文件名称”+”.xls”;
(4)把Excel转化为流
1. 定义内存流
例:MemoryStream Book=new MemoryStream();定义内存流
2. 将工作簿写入内存流
例:book.Write(Book);将工作簿写入内存流
3.最后调用Seek()(偏移量,游标位置)方法:获取文件流的长度
(5)返回文件类型
File(fileStream要发送到响应的流,contentType内容类型(MIME 类型),fileDownloadName浏览器中显示的文件下载对话框内要使用的文件名。)
例:return File(Book, “application/vnd.ms-excel”, “文件名称”)

二:没有模板的导出

  1. 创建Excel对象
    (1) 创建一个工作簿 例:NPOI.HSSF.UserModel.HSSFWorkbook book
    (2) 在工作簿里创建一个工作表 例:NPOI.SS.UserModel.ISheet sheet = book.CreateSheet();
  2. 设置样式
    (1) ICellStyle 声明单元格样式
    (2) IFont 声明字体样式
    (3) SetFont() 把字体样式加入到单元格
  3. 合并单元格(第几行开始,到第几行结束,第几列开始,到第几列结束)
    例:sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6));
  4. 创建第一行(表头)
    (1) 给sheet添加第一行的头部标题 CreateRow(“索引”) 创建行
    例:NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0);第一行,索引为0
    (2) 设置行高
    例:row1.Height = 22 * 20;
  5. 创建单元格并设置单元格的值
    (1) CreateCell() 创建单元格
    (2) SetCellValue() 设置单元格的值
    例:row1.CreateCell(0).SetCellValue(“序号”);
  6. 通过for循环遍历查询出来的数据
  7. 设置列宽为自动适应
    例:sheet.AutoSizeColumn();
  8. 最后在通过把Excel转化为文件流,输出
    (1) 定义内存流 MemoryStream
    (2) 将工作簿写入内存流 Write()
    (3) 最后调用Seek()(偏移量,游标位置)方法:获取文件流的长度 Seek()
  9. return File(fileStream要发送到响应的流,contentType内容类型(MIME 类型),fileDownloadName浏览器中显示的文件下载对话框内要使用的文件名。)

对Excel表格数据的导入
1、 先做好一个模板,供客户下载(如果客户没有模板,提示用户下载模板)
2、 get(0).files[0] 获取要上传的Excel模板
创建XMLHttpRequest对象
3、 指定提交类型和选择要发送的地址,上传文件只能使用POST请求,不能用GET请求
onload()接收返回值 send()发送数据
4、 用基类接收文件HttpPostedFileBase
Path.GetExtension()获取文件的后缀
5、 将传入的文件转化为二进制数组再通过MemoryStream转化为内存流
6、 将内存流转化为工作簿,判断是否有工作表
7、 定义DataTable
8、 PhysicalNumberOfRows 获取的是物理行数,也就是不包括那些空行(隔行)的情况。
9、 FirstCellNum:获取某行第一个单元格下标
LastCellNum:获取某行的列数 !!!!!
FirstRowNum:获取第一个实际行的下标
LastRowNum:获取最后一个实际行的下标、
9、获取表格行数,列数 创建DataTable的行和列,再通过遍历数据赋值
判断有没有空行,如果有就去掉空行
10、查询出要导入数据的表,再把DataTable的数据转为List
11、最后通过Add()或者AddRange() 保存到数据库

对图片的导入
1、<input type=”file” accept=” image/jpeg,image/png,image/jpg,image/gif,image/bmp”>用来接收图片
2、显示图片
3、在系统文件夹里创建一个文件用来接收图片
4、创建一个文件读取器 FileReader()
5、通过get(0).files[0]获取要上传的图片
6、用正则表达式验证图片 /^(?:image/bmp|image/gif|image/jpg|image/jpeg|image/png)$/i
7、通过Path.GetExtension()获取文件的后缀名
8、Guid.NewGuid()全球唯一标示符
9、Server.MapPath()获取文件的路径
10、再通过IO流判断之前是否存在图片
例:System.IO.File.Exists()
System.IO.File.Delete()删除图片

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值