我是靠谱客的博主 欢呼树叶,这篇文章主要介绍excel模板下载和导入功能一、模板下载二、excel导入,现在分享给大家,希望可以做个参考。

一、模板下载

1. 将excel放在你项目的静态资源文件夹中

在这里插入图片描述

2. 在前端页面中创建一个按钮,并给一个点击事件(我这里用的是layui的模板)

html按钮部分:这个地方可以改成自己的button按钮,给一个id

复制代码
1
2
3
4
<dib class="layui-input-inline"> <button type="button" class="layui-btn" id="downloadExcel">下载Excel模板</button> </dib>

js部分:根据按钮id配置点击事件

复制代码
1
2
3
4
5
6
7
8
9
$(document).on('click', '#downloadExcel', function () {//这是点击按钮后触发的事件 //baesUrl是引入了静态文件(项目运行在不同的服务器,所以这个地方统一管理,可以理解为:http://localhost:8080) //后面引号中的可以自行去项目中找到你的xlsx文件,右键复制文件路径 var href = baesUrl+"/static/excelFile/药材信息.xlsx"; //这里ctx因为引入了静态文件,根据自己的接口配置路径 window.location.href = href; })

二、excel导入

1. 前端页面(我用的layui模板)

传送阵法 嘿~哈 biubiubiu

2.代码
  1. 导包
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<!--excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency>
  1. 导入工具类
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class ParseExcel { private List<String[]> rosolveFile(InputStream is, String suffix, int startRow) throws IOException, FileNotFoundException { Workbook xssfWorkbook = null; if ("xls".equals(suffix)) { xssfWorkbook = new HSSFWorkbook(is);//HSSFWorkbook为Excel的文档对象 } else if ("xlsx".equals(suffix)) { xssfWorkbook = new XSSFWorkbook(is); } Sheet xssfSheet = xssfWorkbook.getSheetAt(0); //Sheet 为excel的表单 if (xssfSheet == null) { return null; } ArrayList<String[]> list = new ArrayList<String[]>(); int lastRowNum = xssfSheet.getLastRowNum(); for (int rowNum = startRow; rowNum <= lastRowNum; rowNum++) { if (xssfSheet.getRow(rowNum) != null) { Row xssfRow = xssfSheet.getRow(rowNum);// Row excel的行 short firstCellNum = xssfRow.getFirstCellNum(); // short lastCellNum = xssfRow.getLastCellNum(); short lastCellNum = xssfRow.getLastCellNum(); if (firstCellNum != lastCellNum) { String[] values = new String[lastCellNum]; for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) { Cell xssfCell = xssfRow.getCell(cellNum);//Cell excel的格子单元 if (xssfCell == null) { values[cellNum] = ""; } else { values[cellNum] = parseExcel(xssfCell); } } list.add(values); } } } return list; } //判断每一个单元格里的内容类型 private String parseExcel(Cell cell) { String result = null; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC:// 判断单元格的值是否为数字类型 if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式 SimpleDateFormat sdf = null; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat .getBuiltinFormat("h:mm")) { sdf = new SimpleDateFormat("HH:mm"); } else {// 日期 sdf = new SimpleDateFormat("yyyy-MM-dd"); } Date date = cell.getDateCellValue(); result = sdf.format(date); } else if (cell.getCellStyle().getDataFormat() == 58) { // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58) /*yyyy年m月d日----->31 yyyy-MM-dd----- 14 yyyy年m月------- 57 m月d日 ----------58 HH:mm-----------20 h时mm分 ------- 32*/ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); double value = cell.getNumericCellValue(); Date date = org.apache.poi.ss.usermodel.DateUtil .getJavaDate(value); result = sdf.format(date); } else { double value = cell.getNumericCellValue(); CellStyle style = cell.getCellStyle(); DecimalFormat format = new DecimalFormat(); String temp = style.getDataFormatString(); // 单元格设置成常规 if (temp.equals("General")) { format.applyPattern("#"); } result = format.format(value); } break; case HSSFCell.CELL_TYPE_STRING:// 判断单元格的值是否为String类型 result = cell.getRichStringCellValue().toString(); break; case HSSFCell.CELL_TYPE_BLANK://判断单元格的值是否为布尔类型 result = ""; default: result = ""; break; } return result; } //将解析结果封装成对象--------------------------------------------------------------------------------------------- //我这个地方的PageData其实就是封装的实体类 public List<PageData> createCheckCar(String fileName, String suffix, InputStream fileInputStream) throws Exception, IOException { InputStream is = null; List<PageData> member = new ArrayList<PageData>(); if (fileName != null && fileName.length() > 0) { is = new FileInputStream(fileName); } else { is = fileInputStream; } List<String[]> list = this.rosolveFile(is, suffix, 1); for (int i = 0; i < list.size(); i++) { String[] arr = list.get(i); //这个地方换成自己的实体类,然后往实体类中进行set就可 PageData members = new PageData(); members.put("imgPath",arr[0]==null?"":arr[0]);//药材图片//.setUsername(CommonUtil.getRandomString(8)); members.put("imger",arr[1]==null?"":arr[1]);//二维码图片上传//.setPassword(DigestUtils.md5Hex("123456")); members.put("name",arr[2]==null?"":arr[2]);//药材名称//.setCompanyName(arr[0]); members.put("trade",arr[3]==null?"":arr[3]);//药材商品名//.setNickname(arr[1]); members.put("itemPo",arr[4]==null?"":arr[4]);//商品编号//.setWebId(arr[2]); members.put("foctory",arr[5]==null?"":arr[5]);//生产厂家//.setEmail(arr[3]); members.put("inPrice",arr[6]==null?"":arr[6]);//药材成本价//.setMobile(arr[4]); members.put("outPrice",arr[7]==null?"":arr[7]);//药材售价//.setImg("http://file2.zikeys.com/uploads/bbf5e48703a3432eb96cdd2140c4dd5b.jpg"); members.put("dosageform",arr[8]==null?"":arr[8]);//.setIsAccountEnabled(false); members.put("dosageformcode",arr[9]==null?"":arr[9]);//.setIsAccountLocked(true); members.put("unit",arr[10]==null?"":arr[10]);///药材单位companyId/.setRegisterIp("192.168.1.1"); members.put("herbtype",arr[11]==null?"":arr[11]);//药品类型:中药西药//.setLoginIp("192.168.1.1"); members.put("eachbox",arr[12]==null?"":arr[12]);//粒或支/盒.如写:10//.setLoginIp("192.168.1.1"); members.put("eachbox_unit",arr[13]==null?"":arr[13]);//样式如写:粒//.setLoginIp("192.168.1.1"); members.put("qualitygrain",arr[14]==null?"":arr[14]);//质量或体积/粒或支.如写:0.25//.setLoginIp("192.168.1.1"); members.put("qualitygrain_unit",arr[15]==null?"":arr[15]);//质量如写:ug//.setLoginIp("192.168.1.1"); members.put("gyzzh",arr[16]==null?"":arr[16]);//.setLoginIp("192.168.1.1"); //members.put("",arr[17]);//.setLoginIp("192.168.1.1"); if (i!=0){ member.add(members); } } return member; } //main方法,测试用的 public static void main(String[] args) throws Exception, Exception { ParseExcel p = new ParseExcel(); //List<LoginLog> list = p.createCheckCar("d:/2.xls", "xls",null); List<PageData> list = p.createCheckCar(null, "xlsx",new FileInputStream("D:\member.xlsx")); for(PageData arr:list){ //System.out.println(arr.getUsername()+"t"+arr.getPassword()+"t"+arr.getCompanyName()+arr.getEmail()+"t"+arr.getNickname()); } for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
  1. 实现类
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@PostMapping(value = "/uploadExcel") @ResponseBody public PageData uploadExcel(@RequestParam MultipartFile file) { PageData pageData = getPageData(); PageData result = new PageData(); List<PageData> herbsList = new ArrayList<PageData>(); List<PageData> companyList = new ArrayList<PageData>(); try { InputStream inputStream = file.getInputStream(); String fileTitle = file.getOriginalFilename(); int index = fileTitle.lastIndexOf("."); String fileName = fileTitle.substring(0, index); String suffix = fileTitle.substring(index + 1, fileTitle.length());//获取文件后缀 ParseExcel parseExcel = new ParseExcel(); //参数中,第一个传null就可以了,第二个参数是文件后缀 //注意:读取excel文件的时候,我是从第二行开始读的,修改的地方在工具类中的createCheckCar方法中的if (i!=0){member.add(members);} List<PageData> pageList = parseExcel.createCheckCar(null,suffix,inputStream); for (PageData pageInfo: pageList) { //这个地方遍历excel表格中的数据 } } catch (Exception e) { e.printStackTrace(); } return result; }

最后

以上就是欢呼树叶最近收集整理的关于excel模板下载和导入功能一、模板下载二、excel导入的全部内容,更多相关excel模板下载和导入功能一、模板下载二、excel导入内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(113)

评论列表共有 0 条评论

立即
投稿
返回
顶部