日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

excel 表格导入 - java 实现

發布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 excel 表格导入 - java 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。?

import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.foreveross.security.service.extension.ApplicationException; import com.foreveross.springboot.dubbo.utils.Payload; import com.XXX.XXX.domain.dto.ProjectImportDto; import com.xxx.xxx.service.rest.api.ProjectImportRestService; import com.google.common.collect.Lists; import com.sargeraswang.util.ExcelUtil.ExcelLogs; import com.sargeraswang.util.ExcelUtil.ExcelUtil; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils;import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnit; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.UUID;/*** 導入xxxx數據*/ @Service("projectImportRestService") @Path("/api/v1/project") public class ProjectImportRestServiceImpl implements ProjectImportRestService {private static Logger logger = LoggerFactory.getLogger(ProjectImportRestServiceImpl.class);@PersistenceUnitprivate EntityManagerFactory emf;private List<String> questionIds; // 存儲問題數據@POST@Path("/import")@Consumes({MediaType.MULTIPART_FORM_DATA})@Produces({MediaType.APPLICATION_JSON})@Overridepublic Payload importProject(@Context HttpServletRequest request, @Context HttpServletResponse response) {response.setCharacterEncoding("UTF-8");boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart) {FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);// 支持中文文件名upload.setHeaderEncoding("utf-8");List<FileItem> fileItems = Lists.newArrayList(); // guava 不用處理泛型,左邊是什么類型,右邊可以自動匹配。如果list里面放map這種,就可以自動轉換。try {fileItems = upload.parseRequest(request);FileItem fileItem = fileItems.get(0); // 可以多文件上傳,只有一個文件,所以get(0),取第一個。//獲得上傳的文件名String name = UUID.randomUUID().toString() + "-" + fileItem.getName();String filePath = "/home/logs";this.upload4Stream(name, filePath, fileItem.getInputStream());} catch (ApplicationException ex) {ex.printStackTrace(); // return new Payload(ex.getMessage());throw new ApplicationException(Response.Status.NOT_IMPLEMENTED, ex.getMessage());} catch (Exception e) {e.printStackTrace();throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "導入發生異常:", e);}} else {throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "請上傳文件");}return new Payload("Success "+questionIds);}/*** 上傳文件具體操作 ** @param fileName 文件名* @param filePath 文件上傳路徑* @param inStream 文件流* @return 上傳是否成功*/private boolean upload4Stream(String fileName, String filePath,InputStream inStream) throws Exception {boolean result = false;if ((filePath == null) || (filePath.trim().length() == 0)) {return result;}File outputFile = null;try {String wholeFilePath = filePath + File.separator + fileName;File dir = new File(filePath);if (!dir.exists()) {dir.mkdirs();}outputFile = new File(wholeFilePath);boolean isFileExist = outputFile.exists();boolean canUpload = true;if (isFileExist) {canUpload = outputFile.delete();}if (canUpload) {FileUtils.copyInputStreamToFile(inStream, outputFile);//導入數據庫importData(outputFile);}} finally {FileUtils.deleteQuietly(outputFile);}return result;}/*** 導入Excel 數據到數據庫* @param file* @throws Exception*/private void importData(File file) throws Exception {InputStream inputStream = new FileInputStream(file);ExcelLogs logs = new ExcelLogs();Collection<ProjectImportDto> list = ExcelUtil.importExcel(ProjectImportDto.class, inputStream,"yyyy-MM-dd HH:mm:ss", logs);EntityManager em = getEm();try {int i = 0;for (ProjectImportDto dto : list) {if (StringUtils.isEmpty(dto.getProjectCode())) {throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "xxx編號不能為空,請輸入xxx編號,并檢查是否為文本類型");}String querySql = "select * from GAEI_PROJECT where CODE = '" + dto.getProjectCode() + "'";List<Object> objectArrayList = em.createNativeQuery(querySql).getResultList();int result;try {em.getTransaction().begin();if (!CollectionUtils.isEmpty(objectArrayList)) {Object[] data = (Object[]) objectArrayList.get(0);JSONArray jsonArray = JSON.parseArray(data[9].toString()); // -----------------------------------------checkManagerId(dto,em); // -----------------------------------------String professionJson = toProfessionJson(jsonArray, dto);String updateSql = "update GAEI_PROJECT set PROFESSIONAL_GROUP='" +professionJson + "' where CODE = '" + dto.getProjectCode() + "'";result = em.createNativeQuery(updateSql).executeUpdate();} else { // -----------------------------------------checkManagerId(dto,em); // -----------------------------------------JSONArray jsonArray = new JSONArray();String insertSql = "insert into GAEI_PROJECT (SOURCE, PROJECT_DIRECTOR_NO, CODE, STATUS,CREATED_AT, PROFESSIONAL_GROUP) " +" values ('本系統新增', " +"'" + gedProjectDirectorId(dto.getProjectManagerCode(),em) + "'," +"'" + dto.getProjectCode() + "'," +"'正常'," +"'" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") + "'," +"'" + toProfessionJson(jsonArray, dto) + "')";result = em.createNativeQuery(insertSql).executeUpdate();}em.getTransaction().commit();} catch (ApplicationException ex) {ex.printStackTrace();throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, ex.getMessage());} catch (Exception ex) {ex.printStackTrace();em.getTransaction().rollback();throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "導入xxxx數據失敗", ex);}if (result <= 0) {throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "插入xxx數據失敗");}}} catch (ApplicationException ex) {ex.printStackTrace();throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, ex.getMessage());}catch (Exception ex) {ex.printStackTrace();throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, ex.getMessage());} finally {if (null != em) {em.close();}}}/*** 得xxxxid* @param projectManagerCode* @param em* @return*/private String gedProjectDirectorId(String projectManagerCode,EntityManager em){if(projectManagerCode.length() <3){ // 沒有工號return "00000";}String getIdSql = "select id from appbricks_user where usernumber = '" + projectManagerCode + "'";String projectDirectorId = (String)em.createNativeQuery(getIdSql).getSingleResult();if(null == projectDirectorId){questionIds.add("xxx工號:"+projectManagerCode);throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "xxx工號: "+projectManagerCode+" 有誤,請核查");}return projectDirectorId;}/*** 設置xxxxid* @param dto* @param em*/private ProjectImportDto checkManagerId(ProjectImportDto dto,EntityManager em){String getManagerIdSql = "select id from appbricks_user where usernumber = '" + dto.getProfessionGroupManagerCode() + "'";if(null != dto && null != dto.getProfessionGroupManagerCode()){if(dto.getProfessionGroupManagerCode().length()>4 ){ // 長度大于4String managerId = null;try{managerId = (String)em.createNativeQuery(getManagerIdSql).getSingleResult();}catch ( Exception e){questionIds.add("xxxx工號:"+dto.getProfessionGroupManagerCode());logger.info("------------------------------------------------------------------\nxxx導入,xxxid不正確"+ e.getMessage());throw new ApplicationException(Response.Status.INTERNAL_SERVER_ERROR, "xxxx工號: "+dto.getProfessionGroupManagerCode()+" 有誤,請核查");}dto.setProfessionGroupManagerCode(String.valueOf(managerId));}else {dto.setProfessionGroupManagerCode("無");}}else {dto.setProfessionGroupManagerCode("無");}return dto;}/*** 得EntityManager** @return*/private EntityManager getEm() {return emf.createEntityManager();}/*** xxx轉json* @param jsonArray* @param dto* @return*/private String toProfessionJson(JSONArray jsonArray, ProjectImportDto dto) {JSONObject jsonObject = new JSONObject();jsonObject.put("name", dto.getProfessionGroup());jsonObject.put("departmentId", "");jsonObject.put("managerId", dto.getProfessionGroupManagerCode());jsonObject.put("managerName", dto.getProfessionGroupManagerName());if(null == jsonArray){jsonArray = new JSONArray();}jsonArray.add(jsonObject);return JSONUtils.toJSONString(jsonArray);} }

總結

以上是生活随笔為你收集整理的excel 表格导入 - java 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。