1. 案例分析

  2. 技术说明




    Ps:导出Word还需要关注一个“格式”的问题,否则就没必要用Word了,直接txt更方便。

    Ps:Word 2003:HwPFDocument;Word 2007:XwPFDocument。
  3. 代码流程



  4. 效果图



  5. 项目结构图
  6. 共享代码
    // web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>indexServlet</servlet-name><servlet-class>org.imooc.servlet.IndexServlet</servlet-class></servlet><servlet-mapping><servlet-name>indexServlet</servlet-name><url-pattern>/index</url-pattern></servlet-mapping><servlet><servlet-name>importExcelInit</servlet-name><servlet-class>org.imooc.servlet.ImportExcelInitServlet</servlet-class></servlet><servlet-mapping><servlet-name>importExcelInit</servlet-name><url-pattern>/importExcelInit</url-pattern></servlet-mapping><servlet><servlet-name>importExcel</servlet-name><servlet-class>org.imooc.servlet.ImportExcelServlet</servlet-class></servlet><servlet-mapping><servlet-name>importExcel</servlet-name><url-pattern>/importExcel</url-pattern></servlet-mapping><servlet><servlet-name>exportExcelInit</servlet-name><servlet-class>org.imooc.servlet.ExportExcelInitServlet</servlet-class></servlet><servlet-mapping><servlet-name>exportExcelInit</servlet-name><url-pattern>/exportExcelInit</url-pattern></servlet-mapping><servlet><servlet-name>exportExcel</servlet-name><servlet-class>org.imooc.servlet.ExportExcelServlet</servlet-class></servlet><servlet-mapping><servlet-name>exportExcel</servlet-name><url-pattern>/exportExcel</url-pattern></servlet-mapping><servlet><servlet-name>importWordInit</servlet-name><servlet-class>org.imooc.servlet.ImportWordInitServlet</servlet-class></servlet><servlet-mapping><servlet-name>importWordInit</servlet-name><url-pattern>/importWordInit</url-pattern></servlet-mapping><servlet><servlet-name>importWord</servlet-name><servlet-class>org.imooc.servlet.ImportWordServlet</servlet-class></servlet><servlet-mapping><servlet-name>importWord</servlet-name><url-pattern>/importWord</url-pattern></servlet-mapping><servlet><servlet-name>exportWordInit</servlet-name><servlet-class>org.imooc.servlet.ExportWordInitServlet</servlet-class></servlet><servlet-mapping><servlet-name>exportWordInit</servlet-name><url-pattern>/exportWordInit</url-pattern></servlet-mapping><servlet><servlet-name>exportWord</servlet-name><servlet-class>org.imooc.servlet.ExportWordServlet</servlet-class></servlet><servlet-mapping><servlet-name>exportWord</servlet-name><url-pattern>/exportWord</url-pattern></servlet-mapping><jsp-config><jsp-property-group><url-pattern>*.jsp</url-pattern><include-prelude>/WEB-INF/jsp/common.jsp</include-prelude></jsp-property-group></jsp-config>
    </web-app>
    // common.jsp<%String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();request.setAttribute("basePath", basePath);
    %>
    // index.jsp<div class="ileft" id="menuDiv"><h3 onclick="clickSecondMenu(this,'${basePath}/importExcelInit')"><a>导入Excel</a></h3><h3 onclick="clickSecondMenu(this,'${basePath}/exportExcelInit')"><a>导出Excel</a></h3><h3 onclick="clickSecondMenu(this,'${basePath}/importWordInit')"><a>导入Word</a></h3><h3 onclick="clickSecondMenu(this,'${basePath}/exportWordInit')"><a>导出Word</a></h3>
    </div>
    package org.imooc.dto;import org.apache.commons.fileupload.FileItem;
    import java.util.HashMap;
    import java.util.Map;public class ParamDto {private Map<String,String> paramMap;private Map<String,FileItem> fileMap;public ParamDto() {paramMap = new HashMap<>();fileMap = new HashMap<>();}...
    }package org.imooc.dto;import org.apache.commons.fileupload.FileItem;public class ImportExcelParamDto {private String title;private FileItem excel;...
    }package org.imooc.dto;import org.imooc.entity.Student;
    import java.util.List;public class ImportExcelResultDto {private String title;private List<Student> studentList;private String msg;...
    }package org.imooc.dto;import org.apache.commons.fileupload.FileItem;public class ImportWordParamDto {private String title;private FileItem word;...
    }package org.imooc.dto;public class ImportWordResultDto {private String title;private String content;private String msg;...
    }package org.imooc.entity;import java.util.Date;public class Student {private String name;private Integer age;private Date time;...
    }
    package org.imooc.util;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.imooc.dto.ParamDto;
    import javax.servlet.http.HttpServletRequest;
    import java.util.List;public class RequestUtil {/*** 从request流中解析参数与上传的文件* @param request*/public static ParamDto parseParam(HttpServletRequest request) {ParamDto result = new ParamDto();ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());upload.setHeaderEncoding("UTF-8");try {List<FileItem> fileItemList = upload.parseRequest(request);for(FileItem fileItem : fileItemList) {if(fileItem.isFormField()) { // 普通字段result.getParamMap().put(fileItem.getFieldName(),fileItem.getString("UTF-8"));}else { // 文件字段result.getFileMap().put(fileItem.getFieldName(),fileItem);}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return result;}
    }
    package org.imooc.service;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    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.xssf.usermodel.XSSFWorkbook;
    import org.imooc.dto.ImportExcelParamDto;
    import org.imooc.dto.ImportExcelResultDto;
    import org.imooc.entity.Student;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;public class ExcelService {public ImportExcelResultDto imp(ImportExcelParamDto dto) {ImportExcelResultDto result = new ImportExcelResultDto();result.setTitle(dto.getTitle());List<Student> studentList = new ArrayList<>();result.setStudentList(studentList);Workbook workbook = null;try {// 整个excel(包含里面很多的sheet)workbook = WorkbookFactory.create(dto.getExcel().getInputStream());// 第0个sheetSheet sheet = workbook.getSheetAt(0);// 从0开始数,但是这里的 rowNum == len-1int rowNum = sheet.getLastRowNum();for(int i = 1; i <= rowNum; i++) {// 第1行,因为第0行是字段名Row row = sheet.getRow(i);Student student = new Student();studentList.add(student);// 获取单元格cell的内容// 注意:这里的数据类型要与excel的单元格的数据类型对齐,右键【设置单元格格式(F)…】查看student.setName(row.getCell(0).getStringCellValue());student.setAge((int) row.getCell(1).getNumericCellValue());student.setTime(row.getCell(2).getDateCellValue());}} catch (Exception e) {e.printStackTrace();result.setMsg("解析Excel失败!");} finally {if(workbook != null) {try {workbook.close();} catch (IOException e) {e.printStackTrace();}}}return result;}public Workbook export(boolean isXlsx) {Workbook workbook;if(isXlsx) { // 07workbook = new XSSFWorkbook();} else { // 03workbook = new HSSFWorkbook(); }Sheet sheet = workbook.createSheet("My Sheet");List<List<String>> content = this.getContent();for(int i = 0; i < content.size(); i++) {Row row = sheet.createRow(i);List<String> rowData = content.get(i);for(int j  = 0; j < rowData.size(); j++) {row.createCell(j).setCellValue(rowData.get(j));}}return workbook;}private List<List<String>> getContent() {List<List<String>> result = new ArrayList<>();List<String> row = new ArrayList<>();result.add(row);row.add("序号");row.add("姓名");row.add("年龄");row.add("时间");row = new ArrayList<>();result.add(row);row.add("1");row.add("路人甲");row.add("18");row.add("2010-01-01");row = new ArrayList<>();result.add(row);row.add("2");row.add("路人乙");row.add("19");row.add("2010-01-02");row = new ArrayList<>();result.add(row);row.add("3");row.add("路人丙");row.add("20");row.add("2010-01-03");return result;}
    }
    package org.imooc.service;import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;
    import org.imooc.dto.ImportWordParamDto;
    import org.imooc.dto.ImportWordResultDto;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;public class WordService {/*** 导入*/public ImportWordResultDto imp(ImportWordParamDto dto) {ImportWordResultDto result = new ImportWordResultDto();result.setTitle(dto.getTitle());HWPFDocument doc = null; // 03try {doc = new HWPFDocument(dto.getWord().getInputStream());// word 中的换行标识符是 \rresult.setContent(doc.getDocumentText().replace("\r","<br/>"));} catch (OfficeXmlFileException oe) {System.out.println("这可能是一个07版的Word");} catch (Exception e) {result.setMsg("这可能不是一个Word");return result;} finally {if(doc != null) {try {doc.close();return result;} catch (IOException e) {e.printStackTrace();}}}// 07XWPFDocument docx = null;try {docx = new XWPFDocument(dto.getWord().getInputStream());List<XWPFParagraph> paragraphList = docx.getParagraphs();StringBuilder content = new StringBuilder();// 07Word 以段落的方式分割,是手动换行才算;而不是空间不够挤到下一行,这不算换行,会当成同一个段落里for (int i = 0; i < paragraphList.size(); i++) {if(i != 0) {content.append("<br/>");}content.append(paragraphList.get(i).getText());}result.setContent(content.toString());} catch (IOException e) {e.printStackTrace();} finally {if(docx != null) {try {docx.close();} catch (IOException e) {e.printStackTrace();}}}return result;}/*** 导出03版Word*/public HWPFDocument export03(Map<String,String> replaceContent) {HWPFDocument doc = null;try {// 模板文件地址载入doc = new HWPFDocument(new FileInputStream("D:\\template\\template_03.doc"));Range range = doc.getRange();for(Map.Entry<String,String> entry : replaceContent.entrySet()) {range.replaceText(entry.getKey(),entry.getValue());}} catch (Exception e) {return null;}return doc;}/*** 导出07版Word*/public XWPFDocument export07(Map<String,String> replaceContent) {XWPFDocument docx = null;try {// 模板文件地址载入,导出一定要有模板文件,否则是不行的。docx = new XWPFDocument(new FileInputStream("D:\\template\\template_07.docx"));List<XWPFParagraph> paragraphList = docx.getParagraphs();for(XWPFParagraph paragraph : paragraphList) {List<XWPFRun> runs = paragraph.getRuns();// run 是根据格式不一样来分割for(XWPFRun run : runs) {String str = run.getText(run.getTextPosition());for(Map.Entry<String,String> entry : replaceContent.entrySet()) {str = str.replace(entry.getKey(),entry.getValue());}run.setText(str,0);}}} catch (IOException e) {return null;}return docx;}
    }
  7. 导入Excel(核心代码)
    package org.imooc.servlet;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ImportExcelInitServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("/WEB-INF/jsp/importExcel.jsp").forward(req,resp);}
    }
    // importExcel.jsp<form id="mainForm" method="post" enctype="" action="${basePath}/importExcel"><input id="title" name="title" type="text"/><input type="file" name="excel" /><input value="导入" onclick="document.getElementById('mainForm').submit();" type="button" />
    </form>
    package org.imooc.servlet;import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.imooc.dto.ImportExcelParamDto;
    import org.imooc.dto.ImportExcelResultDto;
    import org.imooc.dto.ParamDto;
    import org.imooc.service.ExcelService;
    import org.imooc.util.RequestUtil;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ImportExcelServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {if(ServletFileUpload.isMultipartContent(req)) { // enctype="multipart/form-data" 带文件上传的表单ParamDto dto = RequestUtil.parseParam(req);ImportExcelParamDto paramDto = new ImportExcelParamDto();paramDto.setTitle(dto.getParamMap().get("title"));paramDto.setExcel(dto.getFileMap().get("excel"));ExcelService service = new ExcelService();ImportExcelResultDto resultDto = service.imp(paramDto);req.setAttribute("result",resultDto);}else { // 普通表单// req.getParameter("");}req.getRequestDispatcher("/WEB-INF/jsp/importExcelResult.jsp").forward(req,resp);}
    }
    // importExcelResult.jsp<script type="text/javascript">function bodyInit() {// 与EL搭配使用时,必须要加引号,因为读取出来不是字符串,比如:张三,而不是"张三"// if('') --> false; if('有内容') --> trueif('${result.msg}') {alert('${result.msg}');}}
    </script><body onload="bodyInit();"><tr><td>标题:</td><td>${result.title}</td></tr><c:forEach items="${result.studentList}" var="item" varStatus="s"><tr><td>${s.count}</td><td>${item.name}</td><td>${item.age}</td><td><fmt:formatDate value="${item.time}" pattern="yyyy-MM-dd"/></td></tr></c:forEach>
    </body>
  8. 导出Excel(核心代码)
    package org.imooc.servlet;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ExportExcelInitServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("/WEB-INF/jsp/exportExcel.jsp").forward(req,resp);}
    }
    // exportExcel.jsp<form action="${basePath}/exportExcel" id="mainForm" method="post"><td>标题:</td><td><input id="title" value="" type="text" /></td><td><input value="查询" onclick="" type="button" /><input value="导出" onclick="document.getElementById('mainForm').submit();" type="button" /></td>
    </form>
    package org.imooc.servlet;import org.apache.poi.ss.usermodel.Workbook;
    import org.imooc.service.ExcelService;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;public class ExportExcelServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ExcelService service = new ExcelService();Workbook workbook = service.export(true);resp.setHeader("Content-Disposition","attachment;filename=export.xlsx");ServletOutputStream outputStream = resp.getOutputStream();// 直接将文件输出提供下载导出workbook.write(outputStream);outputStream.flush();outputStream.close();workbook.close();// 把文件先存下来再提供下载导出// 想用这种方法把上边【直接将文件输出提供下载导出】部分注释掉,把下边这部分代码放开运行//        FileOutputStream fileOutputStream = new FileOutputStream("d:/upload/export.xlsx");
    //        workbook.write(fileOutputStream);
    //        FileInputStream fileInputStream = new FileInputStream("d:/upload/export.xlsx");
    //        byte[] bytes = new byte[fileInputStream.available()];
    //        fileInputStream.read(bytes);
    //        outputStream.write(bytes);
    //        outputStream.flush();
    //        outputStream.close();
    //        workbook.close();}
    }/*
    第一种:直接将文件输出提供下载导出客户端:我要一个表格服务器:好,我在处理服务器(处理好了)服务器:接着!(直接把处理好的丢给客户端,所以服务端丢完就没了)客户端:拿到了!第二种:把文件先存下来再提供下载导出客户端:我要一个表格服务器:好,我在处理服务器(处理好了)服务器:路径给你,自己下载一份!(把处理好的保存在自己的磁盘,所以服务端还存在)客户端:我下载好了!(是根据服务器提供的下载路径下载下来,相当于服务器是原本,客户端是拷贝本)
    */
  9. 导入Word(核心代码)
    package org.imooc.servlet;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ImportWordInitServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("/WEB-INF/jsp/importWord.jsp").forward(req,resp);}
    }
    // importWord.jsp<form id="mainForm" method="post" action="${basePath}/importWord" enctype="multipart/form-data"><input id="title" name="title" type="text"/><input type="file" name="word" /><input value="导入" onclick="document.getElementById('mainForm').submit();" type="button" />
    </form>
    package org.imooc.servlet;import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.imooc.dto.*;
    import org.imooc.service.WordService;
    import org.imooc.util.RequestUtil;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ImportWordServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {if(ServletFileUpload.isMultipartContent(req)) { // 带有文件表单ParamDto dto = RequestUtil.parseParam(req);ImportWordParamDto paramDto = new ImportWordParamDto();paramDto.setTitle(dto.getParamMap().get("title"));paramDto.setWord(dto.getFileMap().get("word"));WordService service = new WordService();ImportWordResultDto resultDto = service.imp(paramDto);req.setAttribute("result",resultDto);}else { // 普通表单// req.getParameter("");}req.getRequestDispatcher("/WEB-INF/jsp/importWordResult.jsp").forward(req,resp);}
    }
    // importWordResult.jsp<script type="text/javascript">function bodyInit() {if('${result.msg}') {alert('${result.msg}');}}
    </script><body onload="bodyInit();"><form action="" id="mainForm" method="post"><tr><td>标题:</td><td>${result.title}</td></tr><tr><td>内容:</td><td>${result.content}</td></tr></form>
    </body>
  10. 导出Word(核心代码)
    package org.imooc.servlet;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;public class ExportWordInitServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getRequestDispatcher("/WEB-INF/jsp/exportWord.jsp").forward(req,resp);}
    }
    // exportWord.jsp<form id="mainForm" method="post" action="${basePath}/exportWord"><input type="hidden" name="isDocx" id="isDocx"/><input name="name" value="张三" type="text" /><input name="age" value="40" type="text" /><input name="time" value="2016-01-01" type="text" /><input value="导出03" type="button" onclick="document.getElementById('isDocx').value = '';document.getElementById('mainForm').submit();"/><input value="导出07" type="button" onclick="document.getElementById('isDocx').value = '1';document.getElementById('mainForm').submit();"/>
    </form>
    package org.imooc.servlet;import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.imooc.service.WordService;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;public class ExportWordServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 用流直接输出,服务器没有保存req.setCharacterEncoding("UTF-8");WordService service = new WordService();Map<String,String> param = new HashMap<>();param.put("${name}",req.getParameter("name"));param.put("${age}",req.getParameter("age"));param.put("${time}",req.getParameter("time"));ServletOutputStream outputStream = resp.getOutputStream();if(req.getParameter("isDocx") != null && !"".equals(req.getParameter("isDocx"))) {XWPFDocument docx = service.export07(param);resp.setHeader("Content-Disposition","attachment;filename=export.docx");docx.write(outputStream);docx.close();} else {HWPFDocument doc = service.export03(param);resp.setHeader("Content-Disposition","attachment;filename=export.doc");doc.write(outputStream);doc.close();}outputStream.flush();outputStream.close();}
    }
  11. 下载地址:点击进入下载页面
  12. 待更新...

JavaWeb - Excel/Word(2003/2007、上传/下载、解析/生成、导入/导出)相关推荐

  1. Excel文件的上传下载解析详解

    Excel有两个版本Excel2003和Excel2007,"2003的后缀.xls","2007的后缀名.xlsx" 由于两者实现机制不同,当实现文件上传时两 ...

  2. Web项目的Excel文件上传、解析、导入

    谨以实际开发中所学到的第一个功能来纪念我的第一篇博客,如有不足之处,万望各位大神不吝指出. Web项目的开发过程中,通常会用到上传Excel文件的功能.将一个Excel文件从本地文件系统中获取,并将其 ...

  3. 软件测试,对于文件的上传下载,导入导出的操作的测试点

    上传下载 1.文件类型 1 .各种常见的文件类型,包括bat, xls, xlsx, doc, exe, jsp, rar, zip, iso等,以及各种视频.音频和图片等. 2.改文件名后缀,例如把 ...

  4. elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)

    1.介绍 本文主要是介绍前后端分离的上传下载,后端使用的是SpringBoot,持久层用的是mybatis-plus,前端用的Vue,UI用的elementUI,测试了一下,文本,图片,excel,都 ...

  5. struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览

    [Struts2]☆★之文件上传,下载,重传,预览 今日群里一兄弟问我能否给一份struts文件上传下载的例子,因为自己项目比较紧所以想在网上找 些源码给他,但是纵观全网,写的都不是太全,这让新手使用 ...

  6. 文件上传下载和Excel读写全家桶

    一.javaweb实现 upload package com.atqh.Servlet.FileServlet;import com.atqh.utils.ExcelUtil; import org. ...

  7. 使用poi实现excel的上传下载

    文章目录 前言 一.poi是什么? 二.使用步骤 1.引入依赖 2.导出excel 3.导入excel 总结 前言 excel的上传下载是常见的需求,这里记录一下使用poi实现Excel的上传和下载 ...

  8. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  9. java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载

    java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...

  10. JavaWeb实现文件上传下载功能实例详解

    感谢原文作者分享,原文链接:http://www.jb51.net/article/96745.htm 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在开发中,文件上传和下载功能是非常 ...

最新文章

  1. Android Handler 深入学习(1)
  2. 求二叉树上结点的路径_剑指offer 二叉树
  3. Jquery让按钮(控件)不可见或者不可用
  4. 运维基础(8)shell脚本
  5. C++ :学习(类、指针)
  6. NokiaJ2ME开发者套件4.0 J2ME 开发
  7. 自研开源框架 Midway Serverless ,让前端提效 50% 背后的故事
  8. 如何在 ASP.Net Core 使用 分布式缓存
  9. 微信 android兼容性问题怎么解决方案,微信小程序兼容性问题
  10. Redis主从复制及集群
  11. 从零开始掌握Python机器学习(附不可错过的资源)
  12. 深度学习样本标完后图片增强标签内容不变
  13. git SSH密钥生成及部署
  14. php spider 参数详解,利用phpspider爬取网站数据
  15. 8、MySQL Workbench导入数据库提示Failed to open required defaults file:xxx.cnf
  16. 新款 2018款macbook Pro 装双系统教程
  17. Lua 实现复数计算器
  18. 项目开发中之如何对接
  19. js怎么解析json格式字符串
  20. 分布式多级服务器架构设计构思

热门文章

  1. poj2228 Naptime 题解报告
  2. mac忘记mysql初始密码怎么办_Mac - MySQL初始密码忘记重置MySQL root密码
  3. 苹果启动2亿美元环境保护基金;英特尔将为汽车制造商生产芯片|前沿科技周报
  4. 广电行业概览(四) 有线电视:HFC网络
  5. 二维码生成库zxing 空白边距问题
  6. 【初遇·C语言程序设计大赛】
  7. 【华为】面试真题_2021年
  8. 解决:vue 钩子函数 done()的理解
  9. 怎么将pdf文件压缩的小一点
  10. html自定义字体demo,21.8.自定义字体