java从EXCEL导入到数据库,从数据库导出到Excel
2017-03-14 10:06
429 查看
package com.fh.util; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * 从EXCEL导入到数据库 */ public class ObjectExcelRead { /** * @param filepath //文件路径 * @param filename //文件名 * @param startrow //开始行号 * @param startcol //开始列号 * @param sheetnum //sheet * @return list */ public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) { List<Object> varList = new ArrayList<Object>(); try { File target = new File(filepath, filename); FileInputStream fi = new FileInputStream(target); HSSFWorkbook wb = new HSSFWorkbook(fi); HSSFSheet sheet = wb.getSheetAt(sheetnum); //sheet 从0开始 int rowNum = sheet.getLastRowNum() + 1; //取得最后一行的行号 for (int i = startrow; i < rowNum; i++) { //行循环开始 PageData varpd = new PageData(); HSSFRow row = sheet.getRow(i); //行 int cellNum = row.getLastCellNum(); //每行的最后一个单元格位置 for (int j = startcol; j < cellNum; j++) { //列循环开始 HSSFCell cell = row.getCell(Short.parseShort(j + "")); String cellValue = null; if (null != cell) { switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库 case 0: cellValue = String.valueOf((int) cell.getNumericCellValue()); break; case 1: cellValue = cell.getStringCellValue(); break; case 2: cellValue = cell.getNumericCellValue() + ""; // cellValue = String.valueOf(cell.getDateCellValue()); break; case 3: cellValue = ""; break; case 4: cellValue = String.valueOf(cell.getBooleanCellValue()); break; case 5: cellValue = String.valueOf(cell.getErrorCellValue()); break; } } else { cellValue = ""; } varpd.put("var"+j, cellValue); } varList.add(varpd); } } catch (Exception e) { System.out.println(e); } return varList; } }
package com.fh.util;import java.util.Date;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.springframework.web.servlet.view.document.AbstractExcelView;import com.fh.util.PageData;import com.fh.util.Tools;/*** 导入到EXCEL*/public class ObjectExcelView extends AbstractExcelView{@Overrideprotected void buildExcelDocument(Map<String, Object> model,HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response) throws Exception {// TODO Auto-generated method stubDate date = new Date();String filename = Tools.date2Str(date, "yyyyMMddHHmmss");HSSFSheet sheet;HSSFCell cell;response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");sheet = workbook.createSheet("sheet1");List<String> titles = (List<String>) model.get("titles");int len = titles.size();HSSFCellStyle headerStyle = workbook.createCellStyle(); //标题样式headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);HSSFFont headerFont = workbook.createFont(); //标题字体headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);headerFont.setFontHeightInPoints((short)11);headerStyle.setFont(headerFont);short width = 20,height=25*20;sheet.setDefaultColumnWidth(width);for(int i=0; i<len; i++){ //设置标题String title = titles.get(i);cell = getCell(sheet, 0, i);cell.setCellStyle(headerStyle);setText(cell,title);}sheet.getRow(0).setHeight(height);HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);List<PageData> varList = (List<PageData>) model.get("varList");int varCount = varList.size();for(int i=0; i<varCount; i++){PageData vpd = varList.get(i);for(int j=0;j<len;j++){String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";cell = getCell(sheet, i+1, j);cell.setCellStyle(contentStyle);setText(cell,varstr);}}}}/**导出用户信息到EXCEL* @return*/@RequestMapping(value="/excel")public ModelAndView exportExcel(){ModelAndView mv = this.getModelAndView();PageData pd = new PageData();pd = this.getPageData();try{if(Jurisdiction.buc6adttonJurisdiction(menuUrl, "cha")){String keywords = pd.getString("keywords"); //关键词检索条件if(null != keywords && !"".equals(keywords)){pd.put("keywords", keywords.trim());}String lastLoginStart = pd.getString("lastLoginStart"); //开始时间String lastLoginEnd = pd.getString("lastLoginEnd"); //结束时间if(lastLoginStart != null && !"".equals(lastLoginStart)){pd.put("lastLoginStart", lastLoginStart+" 00:00:00");}if(lastLoginEnd != null && !"".equals(lastLoginEnd)){pd.put("lastLoginEnd", lastLoginEnd+" 00:00:00");}Map<String,Object> dataMap = new HashMap<String,Object>();List<String> titles = new ArrayList<String>();titles.add("用户名"); //1titles.add("编号"); //2titles.add("姓名"); //3titles.add("职位"); //4titles.add("手机"); //5titles.add("邮箱"); //6titles.add("最近登录"); //7titles.add("上次登录IP"); //8dataMap.put("titles", titles);List<PageData> userList = userService.listAllUser(pd);List<PageData> varList = new ArrayList<PageData>();for(int i=0;i<userList.size();i++){PageData vpd = new PageData();vpd.put("var1", userList.get(i).getString("USERNAME")); //1vpd.put("var2", userList.get(i).getString("NUMBER")); //2vpd.put("var3", userList.get(i).getString("NAME")); //3vpd.put("var4", userList.get(i).getString("ROLE_NAME")); //4vpd.put("var5", userList.get(i).getString("PHONE")); //5vpd.put("var6", userList.get(i).getString("EMAIL")); //6vpd.put("var7", userList.get(i).getString("LAST_LOGIN")); //7vpd.put("var8", userList.get(i).getString("IP")); //8varList.add(vpd);}dataMap.put("varList", varList);ObjectExcelView erv = new ObjectExcelView(); //执行excel操作mv = new ModelAndView(erv,dataMap);}} catch(Exception e){logger.error(e.toString(), e);}return mv;}
/**从EXCEL导入到数据库* @param file* @return* @throws Exception*/@RequestMapping(value="/readExcel")public ModelAndView readExcel(@RequestParam(value="excel",required=false) MultipartFile file) throws Exception{ModelAndView mv = this.getModelAndView();PageData pd = new PageData();if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;}if (null != file && !file.isEmpty()) {String filePath = PathUtil.getClasspath() + Const.FILEPATHFILE; //文件上传路径String fileName = FileUpload.fileUp(file, filePath, "userexcel"); //执行上传List<PageData> listPd = (List)ObjectExcelRead.readExcel(filePath, fileName, 2, 0, 0); //执行读EXCEL操作,读出的数据导入List 2:从第3行开始;0:从第A列开始;0:第0个sheet/*存入数据库操作======================================*/pd.put("RIGHTS", ""); //权限pd.put("LAST_LOGIN", ""); //最后登录时间pd.put("IP", ""); //IPpd.put("STATUS", "0"); //状态pd.put("SKIN", "default"); //默认皮肤pd.put("ROLE_ID", "1");List<Role> roleList = roleService.listAllRolesByPId(pd);//列出所有系统用户角色pd.put("ROLE_ID", roleList.get(0).getROLE_ID()); //设置角色ID为随便第一个/*** var0 :编号* var1 :姓名* var2 :手机* var3 :邮箱* var4 :备注*/for(int i=0;i<listPd.size();i++){pd.put("USER_ID", this.get32UUID()); //IDpd.put("NAME", listPd.get(i).getString("var1")); //姓名String USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1")); //根据姓名汉字生成全拼pd.put("USERNAME", USERNAME);if(userService.findByUsername(pd) != null){ //判断用户名是否重复USERNAME = GetPinyin.getPingYin(listPd.get(i).getString("var1"))+Tools.getRandomNum();pd.put("USERNAME", USERNAME);}pd.put("BZ", listPd.get(i).getString("var4")); //备注if(Tools.checkEmail(listPd.get(i).getString("var3"))){ //邮箱格式不对就跳过pd.put("EMAIL", listPd.get(i).getString("var3"));if(userService.findByUE(pd) != null){ //邮箱已存在就跳过continue;}}else{continue;}pd.put("NUMBER", listPd.get(i).getString("var0")); //编号已存在就跳过pd.put("PHONE", listPd.get(i).getString("var2")); //手机号pd.put("PASSWORD", new SimpleHash("SHA-1", USERNAME, "123").toString()); //默认密码123if(userService.findByUN(pd) != null){continue;}userService.saveU(pd);}/*存入数据库操作======================================*/mv.addObject("msg","success");}mv.setViewName("save_result");return mv;}package com.fh.controller.base;import javax.servlet.http.HttpServletRequest;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import org.springframework.web.servlet.ModelAndView;import com.fh.entity.Page;import com.fh.util.Logger;import com.fh.util.PageData;import com.fh.util.UuidUtil;public class BaseController {protected Logger logger = Logger.getLogger(this.getClass());//日志处理private static final long serialVersionUID = 6357869213649815390L;/** new PageData对象* @return*/public PageData getPageData(){return new PageData(this.getRequest());}/**得到ModelAndView* @return*/public ModelAndView getModelAndView(){return new ModelAndView();}/**得到request对象* @return*/public HttpServletRequest getRequest() {HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();return request;}/**得到32位的uuid* @return*/public String get32UUID(){return UuidUtil.get32UUID();}/**得到分页列表的信息* @return*/public Page getPage(){return new Page();}public static void logBefore(Logger logger, String interfaceName){logger.info("");logger.info("start");logger.info(interfaceName);}public static void logAfter(Logger logger){logger.info("end");logger.info("");}}
相关文章推荐
- Java实现Excel导入数据库,数据库中数据导出Excel表
- JAVA实现数据库数据导入/导出到Excel(POI)
- 用java将Excel表格导入导出数据库
- jxl java工具类,导出excel,导入数据库
- JAVA实现数据库数据导入/导出到Excel(POI技术)
- Java实现Excel导入导出数据库的方法示例
- Excel 导入导出数据库 Java实现
- Java实现将Excel导入数据库和从数据库中导出为Excel
- Java操作Excel(二)将数据库中的数据导出到Excel中
- java导入导出excel操作(jxl)
- Excel和数据库之间数据的导入导出
- 导入/导出 Excel 的基本方法 JAVA EXCEL API简介
- 从excel导入数据到数据库中和gridview导出数据到excel中
- java导入导出excel操作(jxl)
- 在WEB页面上将EXCEL文件导入、导出到数据库中
- Java数据导入导出Excel
- java代码写excel和文本文档的导入导出
- java代码写excel和文本文档的导入导出【转】
- C#中对Excel的操作 使用Excel公式,导入导出数据库等
- Web.config配置数据库(Excel导入导出举例)