首先要下载poi.jar 包,还有上传文件的包:commons.fileupload.jar、commons.logging.jar、commons.beanutils.jar、commons.collections.jar、commons.io.jar、commons.lang.jar,主要是为了上传excel ,然后才能读取里面的内容。struts2 也是类似的;
然后准备个jsp页面,直接贴上我的jsp页面:
<%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/page/share/taglib.jsp"%> <html> <head> <title>从Excel文件导入</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="/css/vip.css" type="text/css"> <SCRIPT language=JavaScript src="/js/FoshanRen.js"></SCRIPT> <script language="JavaScript"> function checkfm(form){ if (trim(form.file.value)==""){ alert("请选择文件!"); form.file.focus(); return false; } return true; } </script> </head> <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="90%" border="0" cellspacing="2" cellpadding="3" align="center"> <tr bgcolor="f5f5f5"> <td><a style="text-decoration:none" href="/memberadmin/supply/batch.do?method=createExcel"> <span><h2>点此下载EXCEL模板</h2> </span> </a></td> </tr> <tr bgcolor="f5f5f5"> <td><span style="color:red;">注:先下载模板,不要修改模板,直接填写数据,然后上传填写好数据的EXCEL文件</span> </td> </tr> </table> <html:form action="/memberadmin/supply/batch" method="post" enctype="multipart/form-data" onsubmit="return checkfm(this)"> <input type="hidden" name="method" value="update"> <br> <table width="90%" border="0" cellspacing="2" cellpadding="3" align="center"> <tr bgcolor="6f8ac4"> <td colspan="3"><font color="#FFFFFF">上传文件:</font> </td> </tr> <tr bgcolor="f5f5f5"> <td width="20%"> <div align="right">Excel文件:</div> </td> <td width="38%"><html:file property="file" size="50" maxlength="50" /></td> </tr> <tr bgcolor="f5f5f5"> <td colspan="3"> <div align="center"> <input type="hidden" name="type" value="${param.type}" /> <input type="button" onclick="javascript:history.back();" value=" 返 回 " class="frm_btn"> <input type="submit" name="SYS_SET" value=" 确 定 " class="frm_btn"> </div> </td> </tr> </table> </html:form> <br> </body> </html>然后 ,写个Action :
package cn.togo.web.action.supply; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; 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.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.springframework.stereotype.Controller; import cn.togo.web.formbean.update.UpdateForm; import cn.togo.web.formbean.v2.BatchForm; @Controller("/memberadmin/supply/batch") public class BatchAction extends DispatchAction { // 跳转到上传页面 public ActionForward forward(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("forward"); } // 更新数据 public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { BatchForm updateForm = (BatchForm) form; Workbook workbook = null; try { workbook = new HSSFWorkbook(updateForm.getFile().getInputStream()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } getData(workbook); return mapping.findForward("update"); } //从excel上获取数据 private void getData(Workbook workbook) { // TODO Auto-generated method stub List<String> list = new ArrayList<String>(); Sheet sheet = workbook.getSheetAt(workbook.getActiveSheetIndex()); int rows = sheet.getLastRowNum(); for (int i = 0; i < rows; i++) { Row row = sheet.getRow(i); if (row == null || row.getCell(0) == null) { continue; } String value = row.getCell(0).getStringCellValue(); list.add(value); } int j = 0; for (String s : list) { System.out.println(j++ + " : " + s); } } // 创建excel public ActionForward createExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { BatchForm batchForm = (BatchForm) form; create(response); return mapping.findForward("create"); } //向新创建的excel添加数据,同时下载 @SuppressWarnings("deprecation") private void create(HttpServletResponse response) throws IOException { // TODO Auto-generated method stub response.setHeader("Content-Type", "application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=" + "test.xls"); HSSFWorkbook wb = new HSSFWorkbook();// 创建Excel工作簿对象 HSSFSheet sheet = wb.createSheet("my first excel");// 创建Excel工作表对象 HSSFCellStyle cellStyle = wb.createCellStyle();// 创建单元格样式 cellStyle.setLocked(true); cellStyle.setFillBackgroundColor(HSSFColor.YELLOW.index); HSSFRow row = sheet.createRow((short) 0); // 创建Excel工作表的第一行 HSSFCell cell = null; cell = row.createCell((short) 0);// 创建Excel工作表第一行第一列单元格 cell.setCellStyle(cellStyle); cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 设置该单元格字符类型 cell.setCellValue("Member_Id"); // 设置该单元格的值 cell = row.createCell((short) 1); cell.setCellStyle(cellStyle); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue("999"); HSSFRow row2 = sheet.createRow((short) 1); HSSFCell cell2 = null; cell2 = row2.createCell((short) 0); cell2.setCellStyle(cellStyle); cell2.setCellType(HSSFCell.CELL_TYPE_STRING); cell2.setCellValue("所属分类"); HSSFCell cell3 = null; cell3 = row2.createCell((short) 1); cell3.setCellStyle(cellStyle); cell3.setCellType(HSSFCell.CELL_TYPE_STRING); cell3.setCellValue("产品名称"); HSSFCell cell4 = null; cell4 = row2.createCell((short) 2); cell4.setCellStyle(cellStyle); cell4.setCellType(HSSFCell.CELL_TYPE_STRING); cell4.setCellValue("品牌列表"); HSSFCell cell5 = null; cell5 = row2.createCell((short) 3); cell5.setCellStyle(cellStyle); cell5.setCellType(HSSFCell.CELL_TYPE_STRING); cell5.setCellValue("型号列表"); HSSFCell cell6 = null; cell6 = row2.createCell((short) 4); cell6.setCellStyle(cellStyle); cell6.setCellType(HSSFCell.CELL_TYPE_STRING); cell6.setCellValue("库存"); HSSFCell cell7 = null; cell7 = row2.createCell((short) 5); cell7.setCellStyle(cellStyle); cell7.setCellType(HSSFCell.CELL_TYPE_STRING); cell7.setCellValue("单位"); OutputStream outputStream = response.getOutputStream(); try { wb.write(outputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { outputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }