Java对Excel表格的上传和下载处理方法

Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识。

而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx。

这里我是按照正规的项目流程做的案例,所以可能会比网上的一些Demo复杂一些。不过文件的上传和下载基本都是一套固定的流程,只是每个人的实现方式不太相同。

数据库我用的是MySql。

下面是我的项目目录:

按照正常的项目做了分层处理,文件上传的业务我放到了service处理,而文件下载业务还在controller层。

对前端请求处理,我分成了两个方法都放在HandleExcelController里面,这个类继承了BaseExcelController,基本的文件操作处理在BaseExcelController里面。

BaseExcelController继承了BaseController,BaseController类是所有controller的父类,这里用到的不太多,这个类封装了response返回值等的处理等一些方法。

项目中除了springMVC和mybatis的jar包之外还引入了:

上传和下载excel文件:

1、创建需要上传的excel文件,为了简化,我这里只写了四列,即四个字段

2、创建jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <title>Excel文件处理</title>
 <script type="text/javascript" src="<c:url value='/res/js/jquery.js'/>"></script>
 <script>
  $(function(){
   var $wrap = $(".wrap");
   var find = function(str){
    return $wrap.find(str);
   }
   var getJname = function(name){
    return find("input[name='"+name+"']");
   }
   getJname("Upload").click(function(){
     var form = new FormData(document.getElementById("tf"));
     $.ajax({
     url:"<c:url value='/File/UploadExcel'/>",
     type:"post",
     data:form,
     dataType:"json",
     processData:false,
     contentType:false,
     success:function(data){
      //window.clearInterval(timer);
       if(data.success == "success"){
        alert("提交文件成功,已将数据存入数据库");
       }
     },
     error:function(e){
      alert("错误!");
      //window.clearInterval(timer);
     }
    });
    })
   getJname("Download").click(function(){
    $.post("<c:url value='/File/DownLoadExcel'/>",{"id":"3"},function(data){
     //alert("下载文件成功");
    },"json")
   })
  })
 </script>
 </head>
 <body>
  <div class="wrap">
   <form id="tf">
    <p>
     <input type="file" name="file" value="选择文件"/>
    Excel文件上传:<input type="button" name="Upload" value="upload"/>
   </p>
   <p>
    Excel文件下载:<input type="button" name="Download" value="updown"/>
   </p>
   </form>
  </div>
 </body>
</html>

3、依次创建controller、service、domain、mapper层,注意它们的依赖关系

1)、controller层的处理,在HandleExcelController里面注入BaseExcelService。因为只是做个示范,所欲我这里将泛型固定为Students类

BaseExcelController代码:

package cn.wangze.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
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.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import cn.wangze.domain.Students;
public class BaseExcelController extends BaseController{
 //获取文件的路径
 String separator = System.getProperty("file.separator");
 //验证元素是否为空
 @SuppressWarnings("all")
 public boolean isEmpty(Object obj){
  if(obj instanceof Object[]){
   if(((Object[]) obj).length==0){
    return true;
   }
   if(obj == null) return true;
   if((String.valueOf(obj).trim()).length() == 0){
    return true;
   }
   if(obj instanceof List){
    if(((List) obj) == null || ((List)obj).size() == 0){
     return true;
    }
   }
  }
  return false;
 }
 /**
  * 文件上传部分
  * */
 //验证文件
 protected boolean checkPathName(String fileName,HttpServletResponse response){
  //验证文件是否存在
  if(isEmpty(fileName)){
   sendError("上传文件不存在",response);
   return false;
  }
  //验证文件是否是以xls或者xlsx做后缀的文件,如果不是就返回错误信息
  if(!(StringUtils.endsWithIgnoreCase(fileName,".xls")||StringUtils.endsWithIgnoreCase(fileName, ".xlsx"))){
   sendError("上传文件类型错误,请核对后重新上传?",response);
  }
  return true;
 }
 //获取文件的sheet
 protected Sheet getSheet(MultipartFile file,String path,String fileName) throws IllegalStateException, IOException{
  //找到要存放到项目里面的路径,新建文件
  File targetFile = new File(path, fileName);
  targetFile.mkdirs();
  if (targetFile.exists()) {
   targetFile.delete();
   file.transferTo(targetFile);
  } else {
   file.transferTo(targetFile);
  }
  //封装输入流,封装sheet里面的内容
  InputStream is = null;
  try{
   is = new FileInputStream(path+separator+fileName);
   //判断版本是否为Excel加强版
   if(StringUtils.endsWithIgnoreCase(fileName, ".xls")){
    return new HSSFWorkbook(is).getSheetAt(0);
   }else if(StringUtils.endsWithIgnoreCase(fileName, ".xlsx")){
    return new XSSFWorkbook(is).getSheetAt(0);
   }
   return null;
  }
  finally{
   if(is != null){
    is.close();
   }
  }
 }
 /**
  * 文件下载部分
  * */
 //根据传入的Sting值,判断生成在excel表的位置
 private HSSFCellStyle getPublicStyle(HSSFWorkbook workbook,String key){
  HSSFFont font = workbook.createFont();
  HSSFCellStyle style = workbook.createCellStyle();
  HSSFPalette customPalette = workbook.getCustomPalette();
  customPalette.setColorAtIndex(HSSFColor.TEAL.index, (byte) 64, (byte) 148, (byte) 160);
  customPalette.setColorAtIndex(HSSFColor.ORANGE.index, (byte) 170, (byte) 204, (byte) 204);
  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  if(key=="head"){
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    font.setFontHeightInPoints((short)12);
    font.setColor(HSSFColor.TEAL.index);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style.setFont(font);
  }
  if(key=="title"){
    font.setColor(HSSFColor.WHITE.index);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    style.setLeftBorderColor(HSSFColor.WHITE.index);
    style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    style.setRightBorderColor(HSSFColor.WHITE.index);
    style.setFont(font);
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    style.setFillForegroundColor(HSSFColor.ORANGE.index);
    style.setFillBackgroundColor(HSSFColor.ORANGE.index);
  }
  return style;
 }
 //创建head头信息
 private void createHead(HSSFSheet sheet,HSSFCellStyle style,String[] title){
  HSSFRow row1 = sheet.createRow(0);
  HSSFCell cellTitle = row1.createCell(0);
  cellTitle.setCellValue(new HSSFRichTextString(title[0]));
  sheet.addMergedRegion(new CellRangeAddress(0,0,0,title.length-2));
  cellTitle.setCellStyle(style);
 }
 //创建title信息
 private void createTitle(HSSFSheet sheet,HSSFCellStyle style,String[] label,int columnNum){
  HSSFRow row2 = sheet.createRow(1);
  HSSFCell cell1 = null;
  for(int n=0;n<columnNum;n++){
   cell1 = row2.createCell(n);
   cell1.setCellValue(label[n+1]);
   cell1.setCellStyle(style);
  }
 }
 //创建content数据信息
 private void createContent(HSSFSheet sheet,HSSFCellStyle style,Collection<Students> list,int columnNum,String[] parameters){
  int index= 0;
  Iterator<Students> it = list.iterator();
  while(it.hasNext()){
   index++;
    Students cash = it.next();
    int num2 = parameters.length;
    HSSFRow row = sheet.createRow(index+1);
    initCells(style, num2,cash, parameters,row);
  }
 }
 //验证是否为中文
 public boolean checkChinese(String s){
  int n=0;
  boolean flag =false;
  for(int i=0; i<s.length(); i++) {
    n = (int)s.charAt(i);
    flag=(19968 <= n && n <40623)?true:false;
  }
  return flag;
 }
 //将数据设置到excel表格内
 public void initCells(HSSFCellStyle style, int columnNum, Students t,
  String[] endContent, HSSFRow row3) {
  for(int j=0;j<columnNum;j++){
    HSSFCell cell = row3.createCell(j);
    String fieldName = endContent[j];
    try{
     if(fieldName!="" && !checkChinese(fieldName)){
      String getMethodName = "get" +fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
      Class clazz = t.getClass();
      Method getMethod = clazz.getMethod(getMethodName, new Class[]{});
      String value = (String)getMethod.invoke(t, new Object[]{});
      cell.setCellValue(value);
     }else{
      cell.setCellValue(fieldName);
     }
     cell.setCellStyle(style);
    }catch(Exception e){
     e.printStackTrace();
    }
   }
 }
 public void createEnd(HSSFSheet sheet,HSSFCellStyle style,int numText,int columnNum,Students t,String[] endContent){
  HSSFRow row3 = sheet.createRow(numText+2);
  initCells(style, columnNum, t, endContent, row3);
 }
 //根据service查询到的数据,创建excel表并插入查询的数据信息
 protected String getOutputName(List<Students> list, String path, String[] title, String[] parameters, Students t, String[] endContent)
  throws IOException{
  //根据传入的title数组的第一个值,设置文件名称
  String filename = title[0]+"_"+ new SimpleDateFormat("yyyyMMdd").format(new Date())+".xls";
  //输出流放到文件的本地位置
  FileOutputStream fos = new FileOutputStream(path+separator+filename);
  //列数,根据title的个数,除去第一个就是每列title的信息
  int columnNum = title.length-1;
  int numText = list.size();
  HSSFWorkbook workbook = new HSSFWorkbook();
  HSSFSheet sheet = workbook.createSheet();
  sheet.setDefaultColumnWidth (20);
  sheet.setDefaultRowHeight((short)400);
  HSSFCellStyle contentStyle = this.getPublicStyle(workbook,"");
  HSSFCellStyle titleStyle = this.getPublicStyle(workbook,"title");
  HSSFCellStyle headerStyle = this.getPublicStyle(workbook,"head");
  createHead(sheet,headerStyle,title);
  createTitle(sheet,titleStyle,title,columnNum);
  createContent(sheet,contentStyle,list,columnNum,parameters);
  //createEnd(sheet,contentStyle,numText,columnNum,t,endContent);
  workbook.write(fos);
  fos.flush();
  fos.close();
  return filename;
 }
}

HandleExcelController用来处理前端请求,代码如下:

package cn.wangze.controller;
import java.io.File;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import cn.wangze.domain.Students;
import cn.wangze.service.BaseExcelService;
@Controller
@RequestMapping("/File")
public class HandleExcelController extends BaseExcelController{
 @Autowired
 private BaseExcelService baseExcelService;
 @RequestMapping("/UploadExcel")
 public void UploadExcel(MultipartFile file,HttpSession session,HttpServletResponse response) throws Exception{
  //如果上传的文件不存在,抛出异常
  if(file == null){
   throw new Exception("文件不存在");
  }
  //获取文件名
  String fileName = file.getOriginalFilename();
  //选择上传的文件存放到项目的路径
  String path = session.getServletContext().getRealPath(separator+"res"+separator+"upload");
  if(!checkPathName(fileName,response)) return ;
  String msg = baseExcelService.loadExcel(getSheet(file, path, fileName));
  sendMsg(true,msg,response);
 }
 @RequestMapping("/DownLoadExcel")
 public void UpdownExcel(Students student,HttpServletResponse res,HttpSession session,HttpServletResponse response)
  throws Exception{
  List<Students> stus = baseExcelService.queryList(student);
  if(stus.size()==0){
   res.sendRedirect("/index.jsp");
   return;
  }
  //下载的excel文件存放的本地路径
  String path = session.getServletContext().getRealPath(separator+"res"+separator+"exportExcel"+separator);
  ServletOutputStream os = res.getOutputStream();
  Students t = baseExcelService.queryTotal(student);
  //标题文字,数值中的第一个值+当前日期为文件名称,以后的每个元素为每列的标题
  String[] title={"studets04","id","名字","年龄","性别"};//标题文字
  //对应实体类的属性值
  String[] parameters ={"id","name","age","sex"};
  String[] endContent = {"","","",""};
  //调用父类的处理方法,生成excel文件
  String filename = getOutputName(stus,path,title,parameters,t,endContent);
  try {
    res.reset();
   res.setCharacterEncoding("utf8");
   res.setContentType("application/vnd.ms-excel;charset=utf8");
   res.setHeader("Content-Disposition", "attachment;fileName="
      +new String(filename.getBytes("utf-8"),"iso-8859-1"));
   os.write(FileUtils.readFileToByteArray(new File(path+separator+filename)));
   sendResult(true,response);
   os.flush();
  } finally {
   if (os != null) {
    os.close();
   }
  }
 }
}

2)、service层的处理,把StudentsMapper注入到BaseExcelService

BaseExcelService代码:

package cn.wangze.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpSession;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.wangze.domain.Students;
import cn.wangze.mapper.StudentsMapper;
@Service
public class BaseExcelService {
 @Autowired
 private StudentsMapper<Students> studentsMapper;
 //判断字符串是否为空
 public boolean isEmpty(String str) {
  return str == null || str.length() == 0;
 }
 //获取单个表格(字段)存放的信息
 private String getValue(Cell cell,String cellLable,Map<String,String> errMap){
  cell.setCellType(Cell.CELL_TYPE_STRING);
  String value = cell.getStringCellValue().trim();
  return value;
 }
 //通过这个方法将excel表的每行的数据放到info对象里面
 private String addInfo(Row row,Students info){
  Map<String,String> errMap = new HashMap<String,String>();
  String id = getValue(row.getCell(0),"ID",errMap);
  String username = getValue(row.getCell(1),"姓名",errMap);
  String age = getValue(row.getCell(2),"年龄",errMap);
  String sex = getValue(row.getCell(3),"性别",errMap);
  String errMsg = errMap.get("errMsg");
  if(!isEmpty(errMsg)){
   return errMsg;
  }
  info.setId(id);
  info.setName(username);
  info.setAge(age);
  info.setSex(sex);
  return null;
 }
 public String loadExcel(Sheet sheet) throws Exception{
  //新建一个List集合,用来存放所有行信息,即每行为单条实体信息
  List<Students> infos = new ArrayList<Students>();
  //获取到数据行数,第一行是title,不需要存入数据库,所以rowNum从1开始
  for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
   Students info = new Students();
   String errMsg2 = addInfo(sheet.getRow(rowNum),info);
   if(errMsg2 != null) return errMsg2;
   infos.add(info);
  }
  if(infos.isEmpty()){
   return "没有解析到学生数据,请查验EXCEL文件";
  }
  //通过studentsMapper的insertSheetData方法,将实体类存放的数据插入到数据库
  int result = studentsMapper.insertSheetData(infos);
  //若插入成功会返回大于1的整数,返回success
  if(result >= 1){
   return "success";
  }
  return "error";
 }
 //查询所有数据库存放的学生信息
 public List<Students> queryList(Students students){
  return studentsMapper.queryList(students);
 }
 //获取到的学生实体信息
 public Students queryTotal(Students students){
  return studentsMapper.queryTotal(students);
 }
 public void downExcel(HttpSession session,String separator){
 }
}

3)、实体层的处理,字段要对应excel表的字段

package cn.wangze.domain;
public class Students {
 String id;
 String name;
 String age;
 String sex;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
}

4)、dao层处理:StudentsMapper.java是一个接口,业务到数据库需要执行的方法在这里声明,StudentsMapper.xml相当于接口的实现类,用来连接java和数据库的操作。

StudentsMapper.java代码:

package cn.wangze.mapper;
import java.util.List;
public interface StudentsMapper<T> {
 public int insertSheetData(List<T> list);
 public List<T> queryList(T t);
 public T queryTotal(T t);
}

StudentsMapper.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wangze.mapper.StudentsMapper">
 <sql id="ColumnList">
  id,name,age,sex
 </sql>
 <sql id="ColumnList_t" >
  t.id,t.name,t.age,t.sex
 </sql>
 <sql id="ValueList">
  #{id},#{name},#{age},#{sex}
 </sql>
 <sql id="WhereClause">
  where 1=1
  <if test="id!=null and id!=''">and id=#{id}</if>
  <if test="name!=null and name!=''">and name=#{name}</if>
  <if test="age!=null and age!=''">and age=#{age}</if>
  <if test="sex!=null and sex!=''">and sex=#{sex}</if>
 </sql>
 <sql id="WhereClause_pager" >
  where 1=1
  <if test="t.id!=null and t.id!=''">and id=#{t.id}</if>
  <if test="t.name!=null and t.name!=''">and name=#{t.name}</if>
  <if test="t.age!=null">and age=#{t.age}</if>
  <if test="t.sex!=null and t.sex!=''">and sex=#{t.sex}</if>
 </sql>
 <sql id="SetClause" >
  set
  <trim suffixOverrides="," >
   <if test="id!=null">id=#{id},</if>
   <if test="name!=null">name=#{name},</if>
   <if test="pid!=null">age=#{age},</if>
   <if test="url!=null">sex=#{sex},</if>
  </trim>
 </sql>
 <select id="queryList" resultType="Students">
  select <include refid="ColumnList"/> from students
 </select>
 <select id="queryTotal" parameterType="Students" resultType="Students">
  select <include refid="ColumnList" /> from students <include refid="WhereClause"/>
  <!-- (select <include refid="ColumnList"/> from t_account_cash t
    <include refid="WhereClauseQuery"/> group by to_char(t.add_time,'yyyy-mm-dd'),t.account_id) a -->
 </select>
 <insert id="insertSheetData" useGeneratedKeys="true" parameterType="java.util.List">
  <!-- <selectKey resultType="long" keyProperty="id" order="AFTER">
   SELECT
   LAST_INSERT_ID()
  </selectKey> -->
  insert into students (id,name,age,sex)
  values
  <foreach collection="list" item="item" index="index" separator="," >
   (#{item.id},#{item.name},#{item.age},#{item.sex})
  </foreach>
 </insert>
</mapper>

所有的代码就是这些了,操作的时候需要注意的多是路径的问题。最复杂的就是BaseExcelController的操作,它做的事情就是解析上传和创建下载excel文件。

执行完之后的结果图是这样:

在数据库查看上传的excel表:

下载到D:\tomcat\tomcat6.0.32\webapps\ExcelHandleDemo\res\exportExcel文件夹下的excel表:

这里有一点不足的地方,我相信你已经发现了,就是下载完excel表格之后,前端还没有和业务对接上,没有相应的提示来告诉操作人执行结果,只能通过代码设置好的路径去查看文件夹下是否有下载的excel文件,

不过这都是细节问题,相信难不倒聪明的各位。

总结

以上所述是小编给大家介绍的Java对Excel表格的上传和下载处理方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • Java利用POI实现导入导出Excel表格示例代码

    介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟.官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html 实现 已经在代码中加入了完整的注释. import java.io.FileInputSt

  • Java实现操作excel表格

    最近老师布置了个任务,用Java对excel后缀名为xlsx的文件进行简单的增,删,改,查操作:虽说是个简单的程序,可作为刚接触的我来说还是有些磕磕碰碰.不过好在还是完成了,进行一个简单的总结. 首先导入了一个poi.jar 网上有很多这个资源可以下载 XSSFSheet sheet=null; XSSFWorkbook book=null; 一:查  (查找本地指定位置的excel表格,在控制台输出) public void print_excel(){ //获取excel表格的行数 int

  • JavaWeb导出Excel文件并弹出下载框

    一.引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 二.相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 三.关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件

  • Java使用Apache POI库读取Excel表格文档的示例

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 项目下载页:http://poi.apache.org/download.html Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Jav

  • java常用工具类之Excel操作类及依赖包下载

    依赖包下载:http://xiazai.jb51.net/201407/tools/java-excel-dependency(jb51.net).rar Excel工具类ExcelUtil.java源码: package com.itjh.javaUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStr

  • JavaWeb动态导出Excel可弹出下载

    由于项目需求,需要将数据导出成Excel表格,并且可选择导出项,可下载.项目使用的Spring+Mybatis+SpringMVC框架,利用Apache POI导出Excel.POI具体使用请自行百度.话不多说,上代码. ExportExcelUtil代码 package com.rixin.common.util; import java.io.OutputStream; import java.lang.reflect.Method; import java.net.URLEncoder;

  • Java对Excel表格的上传和下载处理方法

    Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 这里我是按照正规的项目流程做的案例,所以可能会比网上的一些Demo复杂一些.不过文件的上传和下载基本都是一套固定的流程,只是每个人的实现方式不太相同. 数据库我用的是MySql. 下面是我的项目目录: 按照正常的项目做了分层处理,文件上传的业务我放到了service处理,而文件

  • JAVA使用commos-fileupload实现文件上传与下载实例解析

    首先给大家介绍一文件的上传 实体类 import java.sql.Timestamp; /** * * @Decription 文件上传实体类 * */ public class Upfile { private String id;// ID主键 使用uuid随机生成 private String uuidname; // UUID名称 private String filename;//文件名称 private String savepath; // 保存路径 private Timest

  • Java实现FTP文件的上传和下载功能的实例代码

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

  • vue实现Excel文件的上传与下载功能的两种方式

    一.前言项目中使用到比较多的关于Excel的前端上传与下载,整理出来,以便后续使用或分析他人. 1.前端vue:模板下载与导入Excel 导入Excel封装了子组件,点击导入按钮可调用子组件,打开文件上传的对话框,上传成功后返回结果 <el-col style="padding: 10px 0 20px;"> <el-button class="pull-right" icon="el-icon-upload" type=&qu

  • Java性能工具JMeter实现上传与下载脚本编写

    目录 一.前言 二.预备知识 1.构造方法 2.创建功能 3.重命名和删除功能 4.获取功能 三.Java 实现文件上传下载功能 1.服务下载代码 2.前端代码 3.运行效果 四.JMeter 文件上传与下载脚本编写 1.文件上传脚本 2.文件下载脚本 五.总结 一.前言 性能测试工作中,文件上传也是经常见的性能压测场景之一,那么 JMeter 文件上传下载脚本怎么做? 知识点: Java 实现文件上传下载功能 JMeter 文件上传与下载脚本编写 二.预备知识 先学习下 Java API 关于

  • Java实现文件上传和下载的方法详解

    目录 1.文件上传 1.1 介绍 1.2 代码实现 2.下载 2.1 介绍 2.2 代码实现 1.文件上传 1.1 介绍 文件上传,也称为upload,是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程.文件上传在项目中应用非常广泛,我们经常发微博.发微信朋友圈都用到了文件上传功能. 文件上传时,对页面的form表单有如下要求: 表单属性 取值 说明 method post 必须选择post方式提交 enctype multipart/form-data 采用mult

  • JavaServlet的文件上传和下载实现方法

    先分析一下上传文件的流程 1-先通过前段页面中的选择文件选择要上传的图片 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 T

  • java组件commons-fileupload实现文件上传、下载、在线打开

    最近做了一个文件上传.下载.与在线打开文件的功能,刚开始对文件上传的界面中含有其它表单(例如输入框.密码等)在上传的过程中遇到了许多问题,下面我写了一个同时实现文件上传.下载.在线打开文件的测试程序. 首先请看效果图: 核心代码: package com.jefry; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URL; import java.u

  • java eclipse 中文件的上传和下载示例解析

    文件的上传与下载(一) 在实现文件上传和下载之前我们需要做一些准备工作,在Apache官网去下载文件上传下载的两个组件,下载链接这里给出:common-fileupload组件下载:http://commons.apache.org/proper/commons-fileupload/ common-io组件下载:http://commons.apache.org/proper/commons-io/根据自己需求下载对应版本 一.创建工程 将所需要的两个开发包导入到工程项目中如图: 二.代码编写

  • 使用Python操作FTP实现上传和下载的方法

    搭建ftp服务器server端 # -*- coding:utf-8 -*- from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer # 实例化DummyAuthorizer来创建ftp用户 authorizer = DummyAuthorizer() # 参数:用户名,密码,目录,权限 a

随机推荐