`

java Servlet 实现解析Excel

 
阅读更多
后台

	@SuppressWarnings("all")
	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8"); // 设置编码
		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setSizeThreshold(1024 * 512);
		factory.setRepository(new File("D:/tempload"));
		ServletFileUpload fileUpload = new ServletFileUpload(factory);
		fileUpload.setFileSizeMax(10 * 1024 * 1024);// 设置最大文件大小
		// 设置一些父节点的信息
		MonitorObjectVO monitorObjectVO = new MonitorObjectVO();
		monitorObjectVO.setParent_group_id(request.getParameter("id"));
		monitorObjectVO.setGroup_type(Integer.parseInt(request.getParameter(
				"type").trim()));
		monitorObjectVO.setLayer(Integer.parseInt(request.getParameter("layer")
				.trim()) + 1);
		monitorObjectDAO = (MonitorObjectDAO) WebApplicationContextUtils
				.getRequiredWebApplicationContext(getServletContext()).getBean(
						"monitorObjectDAO");
		try {
			List<FileItem> items = fileUpload.parseRequest(request);// 获取所有表单
			for (FileItem item : items) {
				if ("filePath".equals(item.getFieldName())) {
					// 获取excel中的值
					List<MonitorObjectVO> excelGroupDataList = ExcelUtils
							.loadExcel(item.getInputStream(),
									request.getParameter("filePath"));

					HttpSession session = request.getSession(true);
					MessageVO messageVO = new MessageVO();
					// 后台批量处理并返回些信息
					messageVO = this.monitorObjectDAO.insertGroupFromExcel(
							excelGroupDataList, monitorObjectVO);
					// 如果没有错误信息
					String parentId = messageVO.getMessage().split("=")[1];
					if (excelGroupDataList.size() == Integer.parseInt(messageVO
							.getShowSuccessCount().trim())) {
						messageVO.setMessage("");
					}
					session.setAttribute(ConfigConstant.REQUEST_OBJECT,
							messageVO);

					response.sendRedirect("/web/edmp/page/abnormalmonitor/monitorobject/ExcelImport.jsp?parent_id="
							+ parentId);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


monitorObjectDAO = (MonitorObjectDAO) WebApplicationContextUtils
				.getRequiredWebApplicationContext(getServletContext()).getBean(
						"monitorObjectDAO");


这句话是实现servlet中调用spring bean

if ("filePath".equals(item.getFieldName()))
{
   item.getInputStream() ;
}


filePath是页面file类型的name 它里面的inputStream才有Excel内容。

ExcelUtils

@SuppressWarnings("all")
	public static List<MonitorObjectVO> loadExcel(InputStream is,
			String filePath) {

		List<MonitorObjectVO> excelGroups = null;
		String errorMsg = "";
		try {
			Workbook workBook = null;
			try {
				if (filePath.endsWith(".xls")) { // 97-03
					workBook = new HSSFWorkbook(is);
				} else if (filePath.endsWith(".xlsx")) { // 2007
					workBook = new XSSFWorkbook(is);
				} else {
					System.out.println("不支持的文件类型!");
					return null;
				}
			} catch (Exception e) {
				System.out.println("解析Excel文件出错!");
				e.printStackTrace();
			} finally {
				is.close();
			}
			int sheets = null != workBook ? workBook.getNumberOfSheets() : 0;
			excelGroups = new ArrayList<MonitorObjectVO>();
			Sheet sheet = workBook.getSheetAt(0); // 读取第一个sheet
			int rows = sheet.getPhysicalNumberOfRows(); // 获得行数
			if (rows > 1) { // 第一行默认为标题
				// sheet.getMargin(HSSFSheet.TopMargin);
				for (int j = 1; j < rows; j++) {
					Row row = sheet.getRow(j);
					MonitorObjectVO groupObj = new MonitorObjectVO();
					int cells = row.getLastCellNum();// 获得列数
					if (cells > 0) {
						for (int k = 0; k < cells; k++) {
							Cell cell = row.getCell(k);
							// 全部置成String类型的单元格
							cell.setCellType(Cell.CELL_TYPE_STRING);
							groupObj.setGroup_name(cell.getStringCellValue());
						}
					} else {
						errorMsg = "EXCEL没有数据,请确定。";
					}
					excelGroups.add(groupObj);
				}
			} else {
				errorMsg = "EXCEL没有数据,请确定。";
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		if (errorMsg.length() > 0) {
			System.out.println("错误消息:" + errorMsg);
		}
		return excelGroups;
	}

	public static void main(String[] args) {
		try {
			System.out.println(loadExcel(new FileInputStream("d:/123.xlsx"),
					"d:/123.xlsx").size());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}


Js 提交按钮代码

	/**
			 * 导入内容操作
			 */
		    function importContent(){
		    	var fileName = document.excelImportForm.filePath.value;
		    	if(fileName==""){
		    		alert("请选择文件!");
		    		return;
		    	}
				var objYesDiv = document.getElementById('yes');
				objYesDiv.style.display = "none";
				var objNoDiv = document.getElementById('no');
				objNoDiv.style.display = "block";
				var sending = document.getElementById('sending');
		    	sending.style.visibility="visible";
		    	var messageBar = document.excelImportForm.messageBar.value;
			    if ( messageBar == "true" ){
			    	//excel上传进度条提示信息
			    	onloadExcelProcessMessage();
			    }
			    var url = getExcelImportAction("importOperate");
 			    document.excelImportForm.action=url; //url即为servlet路径
			    document.excelImportForm.submit();
		    }




Excel下载模板

/**
 * 
 */


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class xxxServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
	// 日志记录
	private final static Logger logger = LoggerFactory
			.getLogger(xxxServlet.class);

	public void init(ServletConfig servletConfig) throws ServletException {
		super.init(servletConfig);
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		execute(request, response);
	}

	@SuppressWarnings("all")
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		try {
			response.setContentType("application/vnd.ms-excel;charset=UTF-8");
			response.setHeader("Content-Disposition", "attachment;filename="
					+ new String("xx模板".getBytes("GB2312"), "ISO8859-1")
					+ ".xls");
			OutputStream stream = response.getOutputStream();
			String path = getServletContext().getRealPath("/");
			// 获取源文件路径
			File srcFile = new File(
					path
						+ "\\x\\x\\x\\x\\xx.xls");
			InputStream ins = new FileInputStream(srcFile);
			byte[] byt = null;
			byt = new byte[ins.available()];
			ins.read(byt);
			stream.write(byt);
		} catch (FileNotFoundException e) {
			
			e.printStackTrace();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}

}


function doDownloadExcelModel()
{
	var webRoot = "xxxx";
	var url = webRoot + "/xx/.xxxServlet";
	location.href = url;
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java上传excel并且解析入库

    在Java开发中,上传并解析Excel文件是一种常见的需求,特别是在数据处理、报表导入或系统集成等场景。本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要...

    servlet导入导出excel

    3. **解析Excel文件**:使用Apache POI库,创建`Workbook`对象(对于XLSX使用`XSSFWorkbook`,对于XLS使用`HSSFWorkbook`),然后读取工作表(`Sheet`)和行(`Row`),获取单元格(`Cell`)的数据。 4. **数据验证...

    使用JSP+jqueryUI+java Servlet通过Apache POI实现Excel导入导出

    2. 在Servlet中,使用Apache POI的API解析上传的Excel文件。例如,`HSSFWorkbook` 对象用于处理旧版的 .xls 文件,而 `XSSFWorkbook` 处理 .xlsx 文件。 3. 读取Excel文件中的数据,可以遍历工作表(`Sheet`),行...

    java解析excel

    在Java编程环境中,解析Excel文件是一项常见的任务,特别是在数据处理、报表生成或数据分析等领域。Java提供了多种库来处理Excel文件,如Apache POI、JExcelAPI、OpenCSV等,但最常用的是Apache POI库,它是一个用于...

    文件上传,java解析excel和csv 转javabean

    本篇文章将深入讲解如何使用Java解析Excel(包括Excel 2003和2007格式)和CSV文件,并将解析的数据映射到Java Bean,以便后续的数据处理和存储。 首先,我们需要了解如何在Java中处理文件上传。在Servlet环境中,...

    java上传并读取excel工具类

    本篇文章将深入探讨如何使用Java实现Excel文件的上传和读取,重点关注`MultiFile`转换为`File`以及处理多Sheet页的技巧。 首先,我们需要了解Java中处理Excel的库。Apache POI是一个广泛使用的开源库,它提供了API...

    使用servlet,jsp实现Excel文件的上传和数据库的导入

    这个场景中,我们将讨论如何使用Servlet和JSP来实现在Java Web应用中完成Excel文件的上传,并将其数据导入到MySQL数据库。Servlet是Java中用于处理HTTP请求的服务器端组件,而JSP则是一种动态网页技术,它们结合使用...

    读取EXCEL Demo&Servlet DEMO

    在这个项目中,POI是读取和解析Excel文件(包括XLS和XLSX格式)的关键库。 7. **Excel数据解析**:使用POI库,可以访问Excel文件中的单元格,行和列,进行数据读取。这包括理解工作表结构,获取特定单元格的值,...

    java实现导入导出Excel表

    在导入Excel功能中,Java程序通常会读取用户上传的Excel文件,解析其中的数据,可能将其存储到数据库或进行其他处理。这涉及到POI的HSSFWorkbook(.xls文件)或XSSFWorkbook(.xlsx文件)类,用于打开Excel文件,...

    java文件上传和上传excel后并解析出来的小工具

    Java有许多库可以帮助解析Excel文件,如Apache POI。使用POI,可以创建一个工作簿对象,读取工作表,遍历单元格,获取并处理数据。 4. **异常处理**:在处理文件上传和解析时,需要考虑可能出现的异常,如文件类型...

    Java上传下载excel、解析Excel、生成Excel的问题.docx

    总结来说,Java中处理Excel文件涉及文件的下载、上传、解析和生成,这些操作可以通过Servlet API、Apache POI等工具库来实现。通过理解这些概念和技术,开发者可以有效地处理与Excel相关的业务需求。

    Excel上传并解析java对象

    在IT行业中,Excel上传并解析Java对象是一项常见的数据处理任务,尤其在数据分析、报表生成以及数据导入导出等场景中尤为常见。这个过程涉及到的主要技术包括文件上传、Excel读取、数据转换以及Java对象映射。下面将...

    Java 操作Excel之excel输出到网页

    综上所述,Java操作Excel并输出到网页涉及多个技术环节,从文件上传、Excel解析、数据处理到Web展示,都需要细致的编程和设计。理解这些知识点并灵活运用,可以构建出高效且用户友好的数据处理系统。

    简单java做excel解析并验证插入数据库.pdf

    在示例代码中,没有直接使用POI,但我们可以推断,服务层(如`ExcelServiceImpl`)可能使用了POI来读取和解析Excel数据。POI提供了HSSF和XSSF两个组件分别处理旧版的.xls和新版的.xlsx格式。 文件上传是Web应用中...

    Java操作Excel表格

    解析Excel文件通常涉及到读取文件内容,使用Apache POI,我们可以创建一个Workbook对象来代表整个Excel文件,Sheet对象代表工作表,Row对象代表行,Cell对象则代表单元格。通过遍历这些对象,我们可以获取或设置...

    java实现JSP表格数据导出到EXCEL文件

    本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及JExcelAPI(jxl)库。 首先,我们需要了解Java Servlet在其中的作用。Servlet是Java Web应用程序的一部分,它运行在服务器端...

    小项目上传解析excel文件

    在这个名为"小项目上传解析excel文件"的实践中,我们将探讨如何使用JavaWeb技术来实现Excel文件的上传、解析以及将数据存储到数据库中。以下是对这一主题的详细阐述: 1. **文件上传**: - 在JavaWeb应用中,文件...

    JAVA使用EXCEL例程

    Java通过Apache POI库可以实现对Excel文件的读取、写入和修改,这是一个广泛应用于Java开发中的实用技术。下面将详细阐述相关知识点: 1. **Apache POI库**:Apache POI是Apache软件基金会的一个开源项目,它提供了...

    POI实现的excel的上传下载

    总结来说,Apache POI是Java处理Excel文件的强大工具,通过它我们可以轻松地实现Excel的上传和下载功能,满足Web应用中的数据交互需求。在实际项目中,理解并掌握POI的使用方法对于提升工作效率至关重要。

    Excel与XML相互转化的Java实现

    因此,提出了一种新的解决方案:结合JavaExcelAPI和JDOM(Java本地XML API),将Excel文件转化为XML格式在网络上传输,再于客户端利用JDOM解析文件内容并结合JavaExcelAPI将XML转换回Excel,实现企业间的数据通信和...

Global site tag (gtag.js) - Google Analytics