您的位置:首页 > 编程语言 > Java开发

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("");}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: