利用springmvc 导入导出excel
来源:互联网 发布:淘宝u站怎么进入 编辑:程序博客网 时间:2024/05/16 16:19
导如excel文件
工具类
import java.io.File;import java.util.ArrayList;import java.util.List;import net.sf.ehcache.hibernate.management.impl.BeanUtils;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.hssf.usermodel.HSSFFont;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.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import org.apache.poi.ss.util.CellRangeAddress;public class ExcelUtil { private ExcelUtil() { } /** * 主标题 * @param title * @param cellRangeAddressLength * @return */ public static HSSFWorkbook makeExcelHead(String title, int cellRangeAddressLength){ HSSFWorkbook workbook = new HSSFWorkbook(); HSSFCellStyle styleTitle = createStyle(workbook, (short)16); HSSFSheet sheet = workbook.createSheet(title); sheet.setDefaultColumnWidth(25); CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, cellRangeAddressLength); sheet.addMergedRegion(cellRangeAddress); HSSFRow rowTitle = sheet.createRow(0); HSSFCell cellTitle = rowTitle.createCell(0); // 为标题设置背景颜色 styleTitle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); styleTitle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index); cellTitle.setCellValue(title); cellTitle.setCellStyle(styleTitle); return workbook; } /** * 二级标题 * @param workbook * @param secondTitles * @return */ public static HSSFWorkbook makeSecondHead(HSSFWorkbook workbook, String[] secondTitles){ // 创建用户属性栏 HSSFSheet sheet = workbook.getSheetAt(0); HSSFRow rowField = sheet.createRow(1); HSSFCellStyle styleField = createStyle(workbook, (short)13); for (int i = 0; i < secondTitles.length; i++) { HSSFCell cell = rowField.createCell(i); cell.setCellValue(secondTitles[i]); cell.setCellStyle(styleField); } return workbook; } /** * 插入数据 * @param workbook * @param dataList * @param beanPropertys * @return */ public static <T> HSSFWorkbook exportExcelData(HSSFWorkbook workbook, List<T> dataList, String[] beanPropertys) { HSSFSheet sheet = workbook.getSheetAt(0); // 填充数据 HSSFCellStyle styleData = workbook.createCellStyle(); styleData.setAlignment(HSSFCellStyle.ALIGN_CENTER); styleData.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); for (int j = 0; j < dataList.size(); j++) { HSSFRow rowData = sheet.createRow(j + 2); T t = dataList.get(j); for(int k=0; k<beanPropertys.length; k++){ Object value = BeanUtils.getBeanProperty(t, beanPropertys[k]); HSSFCell cellData = rowData.createCell(k); cellData.setCellValue(value.toString()); cellData.setCellStyle(styleData); } } return workbook; } /** * 使用批量导入方法时,请注意需要导入的Bean的字段和excel的列一一对应 * @param clazz * @param file * @param beanPropertys * @return */ public static <T> List<T> parserExcel(Class<T> clazz, File file, String[] beanPropertys) { // 得到workbook List<T> list = new ArrayList<T>(); try { Workbook workbook = WorkbookFactory.create(file); Sheet sheet = workbook.getSheetAt(0); // 直接从第三行开始获取数据 int rowSize = sheet.getPhysicalNumberOfRows(); if(rowSize > 2){ for (int i = 2; i < rowSize; i++) { T t = clazz.newInstance(); Row row = sheet.getRow(i); int cellSize = row.getPhysicalNumberOfCells(); for(int j=0; j<cellSize; j++){ Object cellValue = getCellValue(row.getCell(j)); org.apache.commons.beanutils.BeanUtils.copyProperty(t, beanPropertys[j], cellValue); } list.add(t); } } } catch (Exception e) { e.printStackTrace(); } return list; } /** * 通用的读取excel单元格的处理方法 * @param cell * @return */ private static Object getCellValue(Cell cell) { Object result = null; if (cell != null) { switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: result = cell.getStringCellValue(); break; case Cell.CELL_TYPE_NUMERIC: //对日期进行判断和解析 if(HSSFDateUtil.isCellDateFormatted(cell)){ double cellValue = cell.getNumericCellValue(); result = HSSFDateUtil.getJavaDate(cellValue); } break; case Cell.CELL_TYPE_BOOLEAN: result = cell.getBooleanCellValue(); break; case Cell.CELL_TYPE_FORMULA: result = cell.getCellFormula(); break; case Cell.CELL_TYPE_ERROR: result = cell.getErrorCellValue(); break; case Cell.CELL_TYPE_BLANK: break; default: break; } } return result; } /** * 提取公共的样式 * @param workbook * @param fontSize * @return */ private static HSSFCellStyle createStyle(HSSFWorkbook workbook, short fontSize){ HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 创建一个字体样式 HSSFFont font = workbook.createFont(); font.setFontHeightInPoints(fontSize); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); return style; }}
实体类
public class User { public String name; public String account; public String dept; public String gender; public String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getDept() { return dept; } public void setDept(String dept) { this.dept = dept; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public User(String name, String account, String dept, String gender, String email) { super(); this.name = name; this.account = account; this.dept = dept; this.gender = gender; this.email = email; } public User() { super(); }}
controller类
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import cn.itcast.core.model.User;@Controller@RequestMapping("/excel")public class ExcelController { @RequestMapping("/export.do") @ResponseBody public void getExcel(HttpServletRequest req, HttpServletResponse response) throws IOException { String fileName = new Date().getTime() + ".xls"; List<User> userList = new ArrayList<User>(); User u1 = new User("张三", "zhangsan", "10", "男", "zhangsan@163.com"); User u2 = new User("张三1", "zhangsan1", "10", "男", "zhangsan@163.com"); User u3 = new User("张三2", "zhangsan2", "10", "男", "zhangsan@163.com"); userList.add(u1); userList.add(u2); userList.add(u3); ByteArrayOutputStream os = new ByteArrayOutputStream(); try { HSSFWorkbook workbook1 = ExcelUtil.makeExcelHead("用户列表", 4); String[] secondTitles = { "用户名", "账号", "所属部门", "性别", "电子邮箱" }; HSSFWorkbook workbook2 = ExcelUtil.makeSecondHead(workbook1, secondTitles); String[] beanProperty = { "name", "account", "dept", "gender", "email" }; HSSFWorkbook workbook = ExcelUtil.exportExcelData(workbook2, userList, beanProperty); workbook.write(os); } catch (IOException e) { e.printStackTrace(); } byte[] content = os.toByteArray(); InputStream is = new ByteArrayInputStream(content); // 设置response参数,可以打开下载页面 response.reset(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(), "iso-8859-1")); ServletOutputStream out = response.getOutputStream(); BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(is); bos = new BufferedOutputStream(out); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (final IOException e) { throw e; } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); } } @RequestMapping("/import.do") public void upload(MultipartFile uploadFile, HttpSession session) throws IllegalStateException, IOException { String filename = uploadFile.getOriginalFilename(); String path = session.getServletContext().getRealPath("/"); File file = new File(path, filename); uploadFile.transferTo(file); String[] beanProperty = { "name", "account", "dept", "gender", "email" }; List<User> list = ExcelUtil.parserExcel(User.class, file, beanProperty); }}
springmvc 新增视图解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="104857600" /> <property name="maxInMemorySize" value="4096" /> <property name="defaultEncoding" value="UTF-8"></property> </bean>
maven依赖
<!-- poi 开始 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.4</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version> </dependency> <!--poi 结束 -->
阅读全文
0 0
- 利用springmvc 导入导出excel
- 利用ExcelLibrary导入导出excel
- 利用ExcellLibrary导入导出excel
- 利用反射导入导出Excel
- SpringMVC实现poi 解析excel 导入导出
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- SpringMvc+jxl实现excel导入导出
- SpringMVC实现poi 解析excel 导入导出
- 利用POI组件 导入导出excel
- 利用POI导入和导出excel文件
- thinkphp利用phpexcel实现导出导入excel
- .net mvc 利用NPOI导入导出excel
- Java____利用HSSF导出、导入excel文件
- .net mvc利用NPOI导入导出excel
- 利用POI实现Excel的导入导出
- PreambleLength以及PLCPHeaderLength
- 字符串相乘
- springmvc的执行流程详解
- 网易编程题 疯狂队列
- 502 Server dropped connection
- 利用springmvc 导入导出excel
- KMP入门级别算法详解--终于解决了(next数组详解)
- HDU 6127 Hard challenge(级角排序)
- iis10配置PHP运行环境教程3
- oracle单表查询
- Java线程学习(一)线程的创建和执行
- H
- Django 多 app 同名 模版 引用
- TensorFlow学习笔记2——数据类型及简单运算