java实现导入excel功能

java

实现功能:

  1、Excel模板下载

  2、导入excel

一、jsp效果和代码

 1 <form id="uploadForm" target="frameFile" class="bs-docs-example form-horizontal" method="post" action="<%=path %>/webCenter.do" enctype="multipart/form-data">

2 <input type="hidden" id="conId" name="conId" value="<%=conId%>">

3 <input type="hidden" id="code" name="code" value="<%=code%>">

4 <input type="hidden" name="method" value="insertUserInfo">

5 <table cellpadding="0" cellspacing="0" border="0" style="width:600px;margin:20px auto;text-algin:left;">

6 <tr><td colspan="4"><input id="dyId" type="hidden"/></td></tr>

7 <tr><td colspan="3"><a href="/center/file/userInfoModel.xlsx" id="downloadModel" name="downloadModel" style="margin-left:7px;"><u>点击下载人员模板</u></a></td></tr>

8 <tr><td colspan="4"><br/></td></tr>

9 <tr><td colspan="3"><input id="files" name="files" type="file" style="width:200px;"/></td></tr><!-- background:url('/center/images/uploadImg.png') no-repeat 0px 10px; -->

10 <tr><td colspan="4"><br/></td></tr>

11 <tr>

12 <td colspan="4" style="text-align: center;">

13 <hr style="width:720px;border-width: 0.3px;margin-left:-10px;">

14 <button id="tiJiao" type="button" class="czbtn" style="width:100px;font-size: 16px;">导入</button>

15 </td>

16 </tr>

17 </table>

18 </form>

View Code

二、js代码

 1 $("#tiJiao").click(function(){

2 if($("#files").val() == ""){

3 alert("请选择要上传的文件");

4 }else{

5 CommonPerson.Base.LoadingPic.FullScreenShow();

6 $("#tkDiv").hide();

7 $("#tk1").hide();

8 $("#uploadForm").submit();

9 }

10 })

View Code

三、action处理

  1     /**

2 * 人员信息导入

3 * @param conId

4 * @param code

5 * @param request

6 * @param response

7 */

8 @RequestMapping(params="method=insertUserInfo",method=RequestMethod.POST)

9 public void insertUserInfo(Integer conId,String code,HttpServletRequest request,HttpServletResponse response){

10 try {

11 String msg = "";

12 Integer state = 0;

13 String fileUrl = "/files/excel/";

14 HttpSession session = this.getSession(request);

15 Adminuser adminUser = session.getAttribute("centerAdminUser") == null?null:(Adminuser) session.getAttribute("centerAdminUser");

16 if(adminUser == null){

17 try {

18 response.sendRedirect(request.getContextPath()+"/center/index.jsp");

19 } catch (Exception e) {

20 e.printStackTrace();

21 }

22 }else{

23 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

24 MultipartFile multipartFile = multipartRequest.getFile("files");

25 InputStream is = multipartFile.getInputStream();

26 if(is!=null){

27 Workbook wb = WorkbookFactory.create(is);

28 CellStyle style = wb.createCellStyle();

29 style.setFillForegroundColor(IndexedColors.RED.getIndex());

30 style.setFillPattern(CellStyle.SOLID_FOREGROUND);

31 List<UserInfo> userInfoList = new ArrayList<UserInfo>();

32 int rowCount = 0;

33 boolean temp = true;

34 try {

35 Sheet st = wb.getSheetAt(0);

36 int rowNum = st.getLastRowNum(); //获取Excel最后一行索引,从零开始,所以获取到的是表中最后一行行数减一

37 int colNum = st.getRow(0).getLastCellNum();//获取Excel列数

38 for(int r=1;r<=rowNum;r++){//读取每一行,第一行为标题,从第二行开始

39 rowCount = r;

40 Row row = st.getRow(r);

41 UserInfo userInfo = new UserInfo();

42 for(int l=0;l<colNum;l++){//读取每一行的每一列

43 Cell cell = row.getCell(l);

44 if(cell != null){

45 cell.setCellType(Cell.CELL_TYPE_STRING);

46 }

47 if(l != 8 && l != 9){//第9列和第10列(列数是从0开始遍历)分别是身份证号码和工作背景,这两项为选填,其余项全为必填

48 if(cell != null && !"".equals(cell.toString().trim())){

49 System.out.print(cell + "\t");

50 }else{

51 System.out.print("该项不能为空" + "\t");

52 temp = false;

53 //给Excel中为空格的必填项添加背景色

54 Cell newCell = row.createCell(l);

55 newCell.setCellStyle(style);

56 }

57 }else{//身份证号和工作背景

58 System.out.print(cell + "\t");

59 }

60 if(temp){

61 switch (l) {

62 case 0: userInfo.setEmail(cell.getStringCellValue()); break;

63 case 1: userInfo.setMobilePhone(cell.getStringCellValue()); break;

64 case 2: userInfo.setPassword(cell.getStringCellValue()); break;

65 case 3: userInfo.setTrueName(cell.getStringCellValue()); break;

66 case 4: userInfo.setXingPingyin(cell.getStringCellValue()); break;

67 case 5: userInfo.setMingPingyin(cell.getStringCellValue()); break;

68 case 6: userInfo.setSex(cell.getStringCellValue()); break;

69 case 7: userInfo.setBirthday(cell.getStringCellValue()); break;

70 case 8: userInfo.setIdCard(cell.getStringCellValue()); break;

71 case 9: userInfo.setBeijin(cell.getStringCellValue()); break;

72 case 10: userInfo.setXueli(cell.getStringCellValue()); break;

73 case 11:

74 userInfo.setProvinceName(cell.getStringCellValue());

75 Hospital provinceId = hospitalService.getHospitalByProvince(cell.getStringCellValue());

76 if(provinceId != null){

77 userInfo.setProvince(provinceId.getHospitalId()+"");

78 }

79 break;

80 case 12:

81 userInfo.setCityName(cell.getStringCellValue());

82 Hospital cityId = hospitalService.getHospitalByCity(cell.getStringCellValue());

83 if(cityId != null){

84 userInfo.setCity(cityId.getHospitalId()+"");

85 }

86 break;

87 case 13:

88 userInfo.setDanwei(cell.getStringCellValue());

89 break;

90 case 14: userInfo.setKs(cell.getStringCellValue()); break;

91 case 15: userInfo.setZhicheng(cell.getStringCellValue()); break;

92 case 16: userInfo.setZhiwei(cell.getStringCellValue()); break;

93 case 17: userInfo.setAddress(cell.getStringCellValue()); break;

94 case 18: userInfo.setZip(cell.getStringCellValue()); break;

95 case 19: userInfo.setTelphone(cell.getStringCellValue()); break;

96 }

97 userInfo.setConferencesId(conId);

98 userInfo.setFromWhere(code);

99 userInfo.setCreateTime(new Date());

100 }

101 }

102 System.out.println();

103 userInfoList.add(userInfo);

104 }

105 if(temp){//Excel完全没有问题

106 webService.saveOrUpdateAll(userInfoList);

107 state = 1;

108 msg = "导入成功";

109 }else{//Excel存在必填项为空的情况

110 state = 2;

111 msg = "Excel数据格式有问题,请下载表格,并将其中标红色的部分填写完整";

112 String filePath = request.getSession().getServletContext().getRealPath("files/excel");

113 String fileName = DateTime.getDateString(new Date(), "yyyy_MM_dd")+String.valueOf(System.currentTimeMillis()/1000)+".xlsx";

114 OutputStream out = new FileOutputStream(new File(filePath + "/" + fileName));

115 wb.write(out);

116 out.close();

117 fileUrl = fileUrl + fileName;

118 }

119 }catch (Exception e) {

120 System.out.println("第"+rowCount+"行出错");

121 msg = "第"+rowCount+"行出错";

122 e.printStackTrace();

123 }

124 }

125 is.close();

126 JSONObject result = new JSONObject();

127 result.accumulate("state",state);

128 result.accumulate("remark",msg);

129 result.accumulate("fileUrl",fileUrl);

130 String urlString = "<script type='text/javascript'>window.parent.insertResult('"+result.toString()+"')</script>";

131 PrintWriter out = response.getWriter();

132 response.setCharacterEncoding("utf-8");

133 response.setContentType("text/html;charset=UTF-8");

134 out.write(urlString);

135 out.flush();

136 out.close();

137 }

138 } catch (Exception e) {

139 e.printStackTrace();

140 try {

141 JSONObject result = new JSONObject();

142 result.accumulate("state",0);

143 result.accumulate("remark","excel数据格式有问题,导入失败");

144 String urlString ="<script type='text/javascript'>window.parent.insertResult('"+result.toString()+"')</script>";

145 PrintWriter out = response.getWriter();

146 response.setCharacterEncoding("utf-8");

147 response.setContentType("text/html;charset=UTF-8");

148 out.write(urlString);

149 out.flush();

150 out.close();

151 } catch (Exception e2) {

152 e2.printStackTrace();

153 }

154 }

155 }

View Code

以上是 java实现导入excel功能 的全部内容, 来源链接: utcz.com/z/393825.html

回到顶部