Vs中文件的导出、图片上传和文件的导入

1、文件的导出(两种方式)
(1)微软的msoffice里面的excel:
需要office的版本号一致(包括小版本号)并且运行的电脑也必须安装office
(2)NPOI(库) : JAVA方面的POI库【专门拿来做文档方面(主做Excel文档)】
1)无网时,需要去添加引用
A在解决方案中找到引用后右键添加引用

B点击添加引用后,在左侧菜单中找到浏览,后点击右下方的浏览,再去找到存放的文件

C最后去解决方案的引用中去查看这四个文件是否已经添加完成

2)查询需要导出的数据

3)创建一个工作簿
NPOI.HSSF.UserModel.HSSFWorkbook workbook(自定义名)=new NPOI.HSSF.UserModel.HSSFWorkbook();

4)创建工作表(不能使用new来创建,工作表需要从已创建的工作簿中去创建)
NPOI.SS.UserModel.ISheet sheet1= workbook.CreateSheet();

A创建工作表时可以同时去修改它的名字
NPOI.SS.UserModel.ISheet sheet1= workbook.CreateSheet(“旅客信息”);

B也可以在创建后再去修改它的名字
workbook(自定义的工作簿名称).SetSheetName(0【索引】,”旅客信息”);

5)设置表的标题
A创建一个行(不能使用new来创建,行需要从已创建的工作表中去创建),行创建完成后要设置行高
NPOI.SS.UserModel.IRow rowTitle(自定义名)=sheet1.CreateRow(0【索引】);
rowTitle.HeightInPoints = 35; :设置行高

B创建单元格(不能使用new来创建,单元格需要从已创建的行中去创建)
NPOI.SS.UserModel.ICell cell0(自定义名)=rowTitle.CreateCell(0【索引】);

C单元格设置值
Cell0.SetCellValue(字符串);

D合并单元格 CellRangeAddress(开始行,结束行,开始列,结束列)
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6));

E设置单元格样式(需要通过workbook去设置)
NPOI.SS.UserModel.ICellStyle cellStyle_Title = workbook.CreateCellStyle();
1、水平居中
cellStyle_Title.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
2、垂直居中
cellStyle_Title.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
3、设置一个新的字体样式
NPOI.SS.UserModel.IFont font_title = workbook.CreateFont();
4、设置字体颜色
font_title.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;
5、加粗
font_title.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;
6、设置字体大小 注意( FontHeight(高度单位是1/20px) FontHeightInPoints(高度单位是1px))
font_title.FontHeightInPoints = 18;
7、设置单元格字体
cellStyle_Title.SetFont(font_title);
8、设置单元格样式
cell0.CellStyle = cellStyle_Title;
F设置表头
a再创建一行(因为第一行已经用作标题了)
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(1);
b设置行高
row1.HeightInPoints = 22;
c创建单元格并设置值
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(“联系人电话”);
d设置表头的样式
(a)声明样式
NPOI.SS.UserModel.ICellStyle cellStyle_header = workbook.CreateCellStyle();
(b)水平居中
cellStyle_header.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
(c)垂直居中
cellStyle_header.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
(d)设置背景颜色,设置填充方式
cellStyle_header.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;
(e)设置填充颜色
cellStyle_header.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Aqua.Index;
(f)设置边框线为实线 左边框
cellStyle_header.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
(g)上边框
cellStyle_header.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
(h)右边框
cellStyle_header.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
(i)下边框
cellStyle_header.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
(j)当单元格是好几列的时候,需要用到for循环去给每一个单元格设置样式
6)设置表格数据
A创建单元格样式

B遍历查询的数据,方便创建行后进行表格内的赋值,最后遍历单元格进行样式添加

C设置列宽为自适应,避免表面样式过丑

7)把创建好的Excel输出到浏览器
创建一个文件名

把Excel转化为流 进行输出

8)最后需要用try catch捕获一下异常 (是整个方法进行异常的捕获)
9)视图页代码

(3)使用模板的方式导出Excel
1)获取模板的文件路径

2)引进system.IO,不用去敲过多的代码
3)使用NPOI打开模板Excel

4)把文件流转为工作簿

5)打开模板的第一个工作表

6)设置表头,设置表格,把创建好的Excel输出到浏览器…………,接下来与第二种方法一样
2、图片上传
一般把文件保存到磁盘上,然后把文件的名称或路径保存到数据库(避免数据库的体积过渡增长)
(1)在视图页上定义一个img标签用来显示图片

创建一个隐藏的input标签(进行文件选择)

(2)创建一个文件读取器 filereader:浏览器用来读取文件的

(3)文件读取器onload事件,在读取文件完成后触发

(4)获取文件输入框里面的文件

(5)使用文件读取器读取文件,并把文件转为URL(Base64编码)

(6)传输文件必须要使用jQuery ajax发送formdata数据(使用post请求)

(7)控制器页面接收文件使用HttpPostedFileBase定义接收类型

(8)进行数据验证
检查目录

		判断是否上传图片

(9)进行图片保存
1)获取文件的扩展名

2)拼接需要保存的文件名称

3)拼接文件保存的路径

4)保存上传的文件到硬盘

5)文件名称保存到数据库

(10)在视图页面查看图片
1)先获取到数据库保存picture的路径

2)定义图片的路径

3)使用layui去显示图片

3、文件的导入
(1)模板的下载
1)获取导入模板的路径

2)获取文件的名称

3)以流的形式返回文件

(2)文件的上传
1)在视图页获取选择的文件

2)获取文件

3)使用XMLHttpRequest上传文件,创建formdata对象

4)将对象添加到formdata中
5)创建一个XMLHttpRequest对象

6)打开一个指定链接

7)设置回调方法

8)发送数据

9) 设置控制器页面的接收

10)对数据做一定的判断

11) 转换成二进制数组 声明一个和文件大小一致的二进制数组

12)将上传的文件转成二进制数组

13)再把二进制数组转为内存流

14)把内存流转为工作簿(不直接使用内存流是为了避免内存流被占用而出现异常的情况)

(3)读取文件内的数据
1)判断是否存在工作表

2)获取出第一个工作表

3)判断工作表中是否存在行 行:物理行数(物理行数不包括空行)

4)定义DataTable(属于System.Data包中的,需要using)

5)获取标题行,设置datatable的列名

6)获取表格的列数,获取表格的行数

7)创建datatable中的列,通过遍历单元格,获取标题行每个单元格的数据,把列添加到datatable中

8)读取Excel中的数据

9)获取行

10)给datatable中创建一行

11)遍历行中列获取数据

12)将一行的数据保存到datatable

13)清除空行(需要在循环外面移除,如果在循环中去改变自身很容易导致出现异常)

14)把datatable的数据转为List(user)对象(同时需要查询出用户组和用户角色)
A查询出用户组和用户角色

B数据转换

C把数据保存到一个列表中

15)把数据保存到数据库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值