JavaWeb - Excel/Word(2003/2007、上传/下载、解析/生成、导入/导出)
- 案例分析
- 技术说明
Ps:导出Word还需要关注一个“格式”的问题,否则就没必要用Word了,直接txt更方便。
Ps:Word 2003:HwPFDocument;Word 2007:XwPFDocument。 - 代码流程
- 效果图
- 项目结构图
- 共享代码
// 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;} }
- 导入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>
- 导出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();} }/* 第一种:直接将文件输出提供下载导出客户端:我要一个表格服务器:好,我在处理服务器(处理好了)服务器:接着!(直接把处理好的丢给客户端,所以服务端丢完就没了)客户端:拿到了!第二种:把文件先存下来再提供下载导出客户端:我要一个表格服务器:好,我在处理服务器(处理好了)服务器:路径给你,自己下载一份!(把处理好的保存在自己的磁盘,所以服务端还存在)客户端:我下载好了!(是根据服务器提供的下载路径下载下来,相当于服务器是原本,客户端是拷贝本) */
- 导入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>
- 导出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();} }
- 下载地址:点击进入下载页面
- 待更新...
JavaWeb - Excel/Word(2003/2007、上传/下载、解析/生成、导入/导出)相关推荐
- Excel文件的上传下载解析详解
Excel有两个版本Excel2003和Excel2007,"2003的后缀.xls","2007的后缀名.xlsx" 由于两者实现机制不同,当实现文件上传时两 ...
- Web项目的Excel文件上传、解析、导入
谨以实际开发中所学到的第一个功能来纪念我的第一篇博客,如有不足之处,万望各位大神不吝指出. Web项目的开发过程中,通常会用到上传Excel文件的功能.将一个Excel文件从本地文件系统中获取,并将其 ...
- 软件测试,对于文件的上传下载,导入导出的操作的测试点
上传下载 1.文件类型 1 .各种常见的文件类型,包括bat, xls, xlsx, doc, exe, jsp, rar, zip, iso等,以及各种视频.音频和图片等. 2.改文件名后缀,例如把 ...
- elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)
1.介绍 本文主要是介绍前后端分离的上传下载,后端使用的是SpringBoot,持久层用的是mybatis-plus,前端用的Vue,UI用的elementUI,测试了一下,文本,图片,excel,都 ...
- struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览
[Struts2]☆★之文件上传,下载,重传,预览 今日群里一兄弟问我能否给一份struts文件上传下载的例子,因为自己项目比较紧所以想在网上找 些源码给他,但是纵观全网,写的都不是太全,这让新手使用 ...
- 文件上传下载和Excel读写全家桶
一.javaweb实现 upload package com.atqh.Servlet.FileServlet;import com.atqh.utils.ExcelUtil; import org. ...
- 使用poi实现excel的上传下载
文章目录 前言 一.poi是什么? 二.使用步骤 1.引入依赖 2.导出excel 3.导入excel 总结 前言 excel的上传下载是常见的需求,这里记录一下使用poi实现Excel的上传和下载 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载
java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...
- JavaWeb实现文件上传下载功能实例详解
感谢原文作者分享,原文链接:http://www.jb51.net/article/96745.htm 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在开发中,文件上传和下载功能是非常 ...
最新文章
- Android Handler 深入学习(1)
- 求二叉树上结点的路径_剑指offer 二叉树
- Jquery让按钮(控件)不可见或者不可用
- 运维基础(8)shell脚本
- C++ :学习(类、指针)
- NokiaJ2ME开发者套件4.0 J2ME 开发
- 自研开源框架 Midway Serverless ,让前端提效 50% 背后的故事
- 如何在 ASP.Net Core 使用 分布式缓存
- 微信 android兼容性问题怎么解决方案,微信小程序兼容性问题
- Redis主从复制及集群
- 从零开始掌握Python机器学习(附不可错过的资源)
- 深度学习样本标完后图片增强标签内容不变
- git SSH密钥生成及部署
- php spider 参数详解,利用phpspider爬取网站数据
- 8、MySQL Workbench导入数据库提示Failed to open required defaults file:xxx.cnf
- 新款 2018款macbook Pro 装双系统教程
- Lua 实现复数计算器
- 项目开发中之如何对接
- js怎么解析json格式字符串
- 分布式多级服务器架构设计构思