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

发布时间 : 星期六 文章简单java做excel解析并验证插入数据库更新完毕开始阅读

1.项目结构

2.action包

2.1 action.Excel package action;

import java.io.File;

import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import model.FileActionForm;

import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import org.apache.struts.upload.FormFile;

import service.ExcelService; import service.ExcelServiceImpl;

public class ExcelAction extends DispatchAction { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward = null; ExcelService service= new ExcelServiceImpl(); FileActionForm fileActionForm = (FileActionForm) form;

// FormFile用于指定存取文件的类型

FormFile file = fileActionForm.getFile(); // 获取当前的文件 // 获得系统的绝对路径 String dir =

// servlet.getServletContext().getRealPath(\

// 我上传的文件没有放在服务器上。而是存在D:D:\\\\loadfile\\\\temp\\\\ String dir = \int i = 0;

String type = file.getFileName(); while (i != -1) { // 找到上传文件的类型的位置,这个地方的是'.' i = type.indexOf(\ /**//* System.out.println(i); */ /**//* 截取上传文件的后缀名,此时得到了文件的类型 */ type = type.substring(i + 1); }

// 限制上传类型为jpg,txt,rar; if (!type.equals(\

{// 当上传的类型不为上述类型时,跳转到错误页面。 forward = mapping.findForward(\ } else { InputStream streamIn = file.getInputStream(); service.upload(streamIn, \ String fname = file.getFileName(); // 这个是io包下的上传文件类 File uploadFile = new File(dir); // 指定上传文件的位置 if (!uploadFile.exists() || uploadFile == null) { // 判断指定路径dir是否存在,不存在则创建路径 uploadFile.mkdirs(); } // 上传的路径+文件名 String path = uploadFile.getPath() + \ // OutputStream用于向某个目标写入字节的抽象类,这个地方写入目标是path,通过输出流FileOutputStream去写 OutputStream streamOut = new FileOutputStream(path); int bytesRead = 0; byte[] buffer = new byte[8192]; // 将数据读入byte数组的一部分,其中读入字节数的最大值是8192,读入的字节将存储到,buffer[0]到buffer[0+8190-1]的部分中 // streamIn.read方法返回的是实际读取字节数目.如果读到末尾则返回-1.如果bytesRead返回为0则表示没有读取任何字节。 while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) { // 写入buffer数组的一部分,从buf[0]开始写入并写入bytesRead个字节,这个write方法将发生阻塞直至字节写入完成。 streamOut.write(buffer, 0, bytesRead); } // 关闭输出输入流,销毁File流。 streamOut.close(); streamIn.close(); file.destroy(); String paths = path; System.out.println(paths); forward = mapping.findForward(\ } return forward; } }

3.dao包 3.1ExcelDao

package dao;

public interface ExcelDao {

public void upload(String sql); public void modify(); public void cleanTemp(); }

3.2ExcelDaoImpl package dao;

import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Statement;

import util.Util;

public class ExcelDaoImpl implements ExcelDao{ @Override public void upload(String sql) { Util util = new Util(); Connection conn; try { conn = util.getConnection(); Statement stmt=conn.createStatement(); stmt.execute(sql); CallableStatement cmt=conn.prepareCall(\ cmt.execute(); util.closeConnection(); } catch (Exception e) { e.printStackTrace(); } } public void modify() { Util util = new Util(); Connection conn; try { conn = util.getConnection(); CallableStatement cmt=conn.prepareCall(\ cmt.execute(); util.closeConnection(); } catch (Exception e) { e.printStackTrace(); }

联系合同范文客服:xxxxx#qq.com(#替换为@)