`
weitao1026
  • 浏览: 1047974 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

servlet导入Excel

阅读更多
从EXCEL到数据库,引入poi.jar
jsp如下
点击(此处)折叠或打开
<form enctype="multipart/form-data" name=testform method=post action=Testaction>
  <table>
    <tr>
       <td><font size=2>批量上传:</font><input type="file" name="test" size="10"><br></td>
      <td><input type="submit" name="批量上传" size="10"value="批量上传"><br></td></tr></table><br>
      </form>
Servlet如下
点击(此处)折叠或打开
package control;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile;

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

public class Testaction extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

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


    }

    /**
     * The doPost method of the servlet.

     *
     * This method is called when a form has its tag value method equals to post.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        //接收上传文件内容中临时文件的文件名
        String tempFileName = new String("tempFileName");
        //tempfile 对象指向临时文件
        File tempFile = new File("D:/"+tempFileName);
        //outputfile 文件输出流指向这个临时文件
        FileOutputStream outputStream = new FileOutputStream(tempFile);
        //得到客服端提交的所有数据
        InputStream fileSourcel = request.getInputStream();
        //将得到的客服端数据写入临时文件
        byte b[] = new byte[1000];
        int n ;
        while ((n=fileSourcel.read(b))!=-1){
         outputStream.write(b,0,n);
        }
        
        //关闭输出流和输入流
        outputStream.close();
        fileSourcel.close();
        
        //randomFile对象指向临时文件
        RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r");
        //读取临时文件的第一行数据
        randomFile.readLine();
        //读取临时文件的第二行数据,这行数据中包含了文件的路径和文件名
        String filePath = randomFile.readLine();
        System.out.println(filePath);
        //得到文件名
        int position = filePath.lastIndexOf('\\');
        CodeToString codeToString = new CodeToString();
        String filename = codeToString.codeString(filePath.substring(position,filePath.length()-1));
        //重新定位读取文件指针到文件头
        randomFile.seek(0);
        //得到第四行回车符的位置,这是上传文件数据的开始位置
        long forthEnterPosition = 0;
        int forth = 1;
        while((n=randomFile.readByte())!=-1&&(forth<=4)){
         if(n=='\n'){
         forthEnterPosition = randomFile.getFilePointer();
         forth++;
         }
        }
        
            //生成上传文件的目录
        File fileupLoad = new File("F:/MyEclipse/Manager/WebRoot/file","upLoad");
        fileupLoad.mkdir();
        //saveFile 对象指向要保存的文件
        File saveFile = new File("F:/MyEclipse/Manager/WebRoot/file/upLoad",filename);
        RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw");
        //找到上传文件数据的结束位置,即倒数第四行
        randomFile.seek(randomFile.length());
        long endPosition = randomFile.getFilePointer();
        int j = 1;
        while((endPosition>=0)&&(j<=4)){
         endPosition--;
         randomFile.seek(endPosition);
         if(randomFile.readByte()=='\n'){
         j++;
         }
        }
        
        //从上传文件数据的开始位置到结束位置,把数据写入到要保存的文件中
        randomFile.seek(forthEnterPosition);
        long startPoint = randomFile.getFilePointer();
        while(startPoint<endPosition){
         randomAccessFile.write(randomFile.readByte());
         startPoint = randomFile.getFilePointer();
        }
        randomAccessFile.close();
        randomFile.close();
        tempFile.delete();
       
        TestExcel t=new TestExcel();
        t.add();
       
       
    }




}
真正的核心代码,分析EXCEL
点击(此处)折叠或打开
package control;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import db.DB;
import db.Test_table;
public class TestExcel {
       //记录类的输出信息?
       static Log log = LogFactory.getLog(TestExcel.class);
       //获取Excel文档的路径?
       public static String filePath = "F://MyEclipse//Manager//WebRoot//file//upLoad//test.xls";
       public void add() {
             try {
                   // 创建对Excel工作簿文件的引用?
                   HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));
                  // 在Excel文档中,第一张工作表的缺省索引是0
                  // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);?
                   HSSFSheet sheet = wookbook.getSheet("Sheet1");
                   //获取到Excel文件中的所有行数
                   int rows = sheet.getPhysicalNumberOfRows();
                   //遍历行
                   for (int i = 0; i < rows; i++) {
                         // 读取左上端单元格?
                         HSSFRow row = sheet.getRow(i);
                         // 行不为空
                         if (row != null) {
                               //获取到Excel文件中的所有的列?
                               int cells = row.getPhysicalNumberOfCells();
                              String value = "";
                              //遍历列?
                               for (int j = 0; j < cells; j++) {
                                     //获取到列的值?
                                     HSSFCell cell = row.getCell(j);
                                     if (cell != null) {
                                           switch (cell.getCellType()) {
                                                 case HSSFCell.CELL_TYPE_FORMULA:
                                                 break;
                                                 case HSSFCell.CELL_TYPE_NUMERIC:
                                                       value += cell.getNumericCellValue() + ",";
                                                 break;
                                                 case HSSFCell.CELL_TYPE_STRING:
                                                       value += cell.getStringCellValue() + ",";
                                                 break;
                                                 default:
                                                       value += "0";
                                                break;
                                     }
                              }
                         }
                        // 将数据插入到sqlserver数据库中
                         String[] val = value.split(",");
                         DB db=new DB();
                         Test_table jBean=new Test_table();
                         String sql ="insert into test_table(num1,num2,num3) values('"+val[0]+"','"+val[1]+"','"+val[2]+"')";
                       
                         int count=db.getInserttest(sql, jBean);
                         System.out.println("------------------"+sql);
                         if(count>0){
                             //关闭文件输入、输出
                        
                           
                   }
                         }}
       } catch (FileNotFoundException e) {
             e.printStackTrace();
       } catch (IOException e) {
             e.printStackTrace();
      }
    }
}
DB数据库连接类

点击(此处)折叠或打开
public class DB {
    
    private static DB db = null;
    private static Connection conn = null;
    private static PreparedStatement pstmt = null;
    private static Statement stmt = null;
     //单例模式,new DB类的时候,创建唯一对象,只初始化一次,
     //注意:不要显式闭此static中的Connection和Statement对象,否则抛空指针异常
     static{
     try {
          Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Market" ,"sa","a");
          stmt = conn.createStatement();
     System.out.println("--------初始化---------");
     } catch (ClassNotFoundException e) {
     System.out.println("---------- 加载数据库驱动类时发生异常: ----------");
     e.printStackTrace();
     } catch (SQLException e) {
     System.out.println("------------ getConnection()方法发生异常--------------");
     }
     }
     public PreparedStatement prepareStmt(String sql){
         PreparedStatement pstmt = null;
         try {
         pstmt = conn.prepareStatement(sql);
         } catch (SQLException e) {
         System.out.println("-------------prepareStmt()方法发生异常-------------------");
         e.printStackTrace();
         }
         return pstmt;
         }
     //执行查询所有记录操作
     public ResultSet exeQuery(String sql){
     ResultSet rs = null;
     try {
          rs = stmt.executeQuery(sql);
     } catch (SQLException e) {
     System.out.println("------------exeQuery()方法发生异常: --------------------");
     e.printStackTrace();
     }
     return rs;
     }
     public void exeUpdate(String sql){
          try{
          stmt.executeUpdate(sql);
          } catch(SQLException e){
          System.out.println("------------- exeUpdate()方法发生异常------------------");
          e.printStackTrace();
          }
          }
     //关闭PreparedStatement对象
     public void closePstmt(PreparedStatement pstmt){
     try{
     pstmt.close();
     pstmt = null;
     }catch(SQLException e){
     System.out.println("-------------------- DB.closePstmt()方法发生异常 -------------------------");
     e.printStackTrace();
     }
     }
     //关闭ResultSet对象
     public void closeRs(ResultSet rs){
     try{
          if(rs!=null)
     rs.close();
     // rs = null;
     }catch(SQLException e){
     System.out.println("-------------------- DB.closePstmt()方法发生异常 -------------------------");
     e.printStackTrace();
     }
     }
     public Connection getDB()
     {
     return conn ;
     }
数据库  表名为 test_table  字段名称为num1,num2,num3。
分享到:
评论

相关推荐

    servlet导入导出excel

    首先,让我们深入了解如何导入Excel数据到MySQL数据库: 1. **Apache POI库**:Apache POI是一个开源项目,提供了读写Microsoft Office格式文档的能力,包括Excel。我们需要添加对应的依赖到项目中,以便能够解析和...

    JSP_通过Servlet将excel数据导入SQL

    JSP 通过 Servlet 将 Excel 数据导入 SQL 本资源主要介绍了如何使用 JSP 通过 Servlet 将 Excel 数据导入 SQL Server 数据库。下面是详细的知识点: 1. JSP 和 Servlet 简介 JSP(Java Server Pages)是一种_...

    jsp 导入 excel的例子

    本例子将介绍如何在JSP中利用POI库来实现Excel数据的导入功能。 首先,我们需要在项目中引入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi ...

    javaWeb导入Excel分析后添加到数据库

    在JavaWeb开发中,将Excel数据导入到数据库是一项常见的需求,尤其在数据处理、报表生成或数据分析场景下。本项目提供了完整的源码实现,帮助开发者理解并应用这一功能。通过以下步骤,我们可以实现这个过程: 1. *...

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

    在Excel导入导出过程中,Servlet将处理JSP提交的文件上传请求,读取Excel数据,并将数据保存到数据库或生成新的Excel文件。 Apache POI是Apache软件基金会的一个开源项目,专门用于读写Microsoft Office格式的文件...

    excel表导入数据库 数据库导出excel(idea平台)

    在这个主题中,我们将深入探讨如何使用Java技术栈,特别是基于IDEA开发环境,来实现在JSP和Servlet中进行Excel与数据库之间的数据导入和导出。 首先,我们需要了解Java中用于处理Excel文件的库,如Apache POI。...

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

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

    easy-poi导入导出excel实例

    《使用Easy-Poi进行Excel导入导出的实践详解》 在现代企业中,数据处理是一项不可或缺的任务,而Excel作为常见的数据存储和分析工具,其导入导出功能在各种业务场景中发挥着重要作用。Easy-Poi是一款优秀的Java库,...

    数据库数据导入到excel中 jsp

    在标题为“数据库数据导入到excel中 jsp”的场景下,我们主要探讨的是如何利用Java Web技术,尤其是JSP(JavaServer Pages)来实现数据在数据库与Excel之间的交互。描述中提到的实例涵盖了两个方向:将Excel数据导入...

    java web 导入 excel

    在Java Web开发中,导入Excel是一项常见的需求,例如用于数据导入、数据分析或者用户上传数据等场景。本知识点将深入探讨如何在Java Web环境下处理Excel文件,主要包括以下内容: 1. **环境准备**: - Java运行...

    java导入excel(直接可执行)

    web项目,直接可执行 测试环境:java 1.8 + poi 3.17+tomcat jar列表: commons-codec-1.10.jar commons-collections4-4.1.jar commons-fileupload-1.3.1.jar ...servlet-api-2.5.jar xmlbeans-2.6.0.jar

    jsp实现增加、查询和excel数据导入数据库中

    本话题聚焦于如何利用JSP实现数据库操作,包括数据的增加、查询以及Excel数据的导入。其中,“poi”是Apache软件基金会的一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel。 首先,让我们详细探讨...

    学生管理系统-数据挖掘,jsp+servlet,文件上传下载,数据库导入导出,excel导入导出。.zip

    总结来说,这个学生管理系统是一个综合运用了Java Web技术,包括jsp、servlet和MySQL数据库的项目,具备数据挖掘、文件上传下载、数据库及Excel数据的导入导出等功能。对于学习Java Web开发或进行毕业设计的学生而言...

    S2SH导入excel.docx

    在S2SH(Struts2、Spring、Hibernate)框架中,导入Excel是一项常见的功能,用于批量处理数据,例如用户输入、数据分析或者系统初始化等。在提供的文件内容中,我们可以看到涉及导入Excel的相关代码和配置,这将帮助...

    java导入导出excel操作(jxl)

    导出excel业务流程: ---------------------------------------------------------- 1、用户点击按钮向服务器发送请求同时将页面数据一同发送到服务器端 2、服务器端接收请求和数据 3、经过servlet对接收到的数据...

    springboot上传excel导入到数据库完整demo(后端代码)

    - 在导入Excel数据到数据库之前,通常需要将数据映射到对应的Java对象(POJO)上。这可以通过创建一个或多个Java类,每个类对应Excel表格的一行,字段与Excel列名相对应。这样可以方便地将Excel数据转换为Java对象...

    servlet将excle数据导入到数据库中

    使用SmartUpload来上传文件才能获取form表单文本的值

    导入Excel读取数据的小例子

    本示例"导入Excel读取数据的小例子"展示了如何在Java Web环境中实现这个功能。 首先,我们需要理解的是文件上传的概念。在Web应用中,文件上传允许用户从本地计算机选择文件并将其发送到服务器进行处理。这通常涉及...

    excel文件的导入和导出

    综上所述,这个压缩包提供了一个基础的文件上传示例,结合前端的AJAX和后端的Servlet,可以实现Excel文件的导入和导出功能。在实际项目中,可以根据需求进行扩展,如增加错误处理、进度显示、多文件上传等功能,提高...

Global site tag (gtag.js) - Google Analytics