您的位置:首页 > 其它

POI导入Excel、导出Excel的简单例子

2016-04-07 10:27 465 查看

导入

是写在Spring MVC里面的一个简单的例子

/**
* 导入数据
*/
@RequestMapping("data_import")
public String data_import(HttpServletRequest request){

// 解析器解析request的上下文
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 先判断request中是否包涵multipart类型的数据,
if (multipartResolver.isMultipart(request)) {
// 再将request中的数据转化成multipart类型的数据
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile file = multiRequest.getFile(iter.next());
if (null != file && file.getSize() > 0 ) {
String fileName = file.getOriginalFilename();
//导入地址,自己定义
String path = request.getSession().getServletContext().getRealPath("/")+"assets"+File.separator+getDate()+"_"+fileName;
File localFile = new File(path);
if(localFile.exists()){
localFile.delete();
}
try {
file.transferTo(localFile);
//如果需要解析的话看这个方法(转化成map插入数据库)
//String[] columnName = {"name","phone","address"};
//getMap(path,columnName);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(localFile.exists()){
localFile.delete();
}
}
}
}
}
return "URL地址";
}
/**
* 从文件中获取需要的map   path地址   columnName列名
* 这里只是简单的对一行的数据
*/
public Map<String,Object> getMap(String path,String[] columnName) throws Exception{
Map<String,Object> maps = new HashMap<String,Object>();
File excel_file = new File(path);// 读取的文件路径
FileInputStream input = new FileInputStream(excel_file); // 读取的文件路径
Workbook wb = null;
if(path.endsWith(".xls")){
// 读取excel2003
wb = new HSSFWorkbook(new BufferedInputStream(input));
}else if(path.endsWith(".xlsx")){
// 读取excel2007
wb = new XSSFWorkbook(new BufferedInputStream(input));
}
if(wb!=null){
Row r = wb.getSheetAt(0).getRow(1); //获取行
if(null != r){
for(int i=0;i<columnName.length;i++){
maps.put(columnName[i],changeCell(r.getCell(i)));
}
}
}
//注意关闭流
input.close();
return maps;
}
/**
* poi读取类型转化,防止数字变成科学计数法
*/
public String changeCell(Cell cell) {
String returnValue = "";
if (null != cell) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: // 数字
DecimalFormat df = new DecimalFormat("0");
returnValue = df.format(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING: // 字符串
returnValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN: // 布尔
Boolean booleanValue = cell.getBooleanCellValue();
returnValue = booleanValue.toString();
break;
case Cell.CELL_TYPE_BLANK: // 空值
returnValue = "";
break;
case Cell.CELL_TYPE_FORMULA: // 公式
returnValue = cell.getCellFormula();
break;
case Cell.CELL_TYPE_ERROR: // 故障
returnValue = "";
break;
default:
System.out.println("未知类型");
break;
}
}
return returnValue;
}


导出

/**
* 导出数据  (这里也是只导出一条记录)   页面不能发送ajax请求
*/
@RequestMapping("data_export")
public ResponseEntity<byte[]> data_export(HttpServletRequest request,HttpServletResponse response,String name,String phone,String address){
//工程地址,自己定义
String path = request.getSession().getServletContext().getRealPath("/")+"assets"+File.separator+getDate()+"_导出数据.xls";
File file = new File(path);
try{
//工作簿
HSSFWorkbook wb = new HSSFWorkbook();
//创建一张表
Sheet sheet = wb.createSheet();
sheet.setDefaultColumnWidth(25);
//取得第一行
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("姓名");
row.createCell(1).setCellValue("电话");
row.createCell(2).setCellValue("地址");
//取得第二行
row = sheet.createRow(1);
row.createCell(0).setCellValue(name);
row.createCell(1).setCellValue(phone);
row.createCell(2).setCellValue(address);

if(file.exists()){
file.delete();
}
//输出
FileOutputStream fileoutputstream = new FileOutputStream(file);
wb.write(fileoutputstream);
fileoutputstream.close();
//这边开始下载文件
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", new String(file
.getName().toString().getBytes("utf-8"), "ISO8859-1"));
return new ResponseEntity<byte[]>(
FileUtils.readFileToByteArray(file), headers,
HttpStatus.CREATED);
}catch (Exception e) {
return null;
}finally{
if(file.exists()){
file.delete();
}
}
}
/**
* 获取需要的日期格式
*/
public String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(new Date());
}


poi 3.14Jar包下载 http://download.csdn.net/detail/liutang9/9483519

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: