`

EXCEL导入数据库及数据库数据导出到EXCEL

阅读更多
   很久没有发BLOG,呵呵,是因为最近在帮助朋友在做一个项目,很忙。呵呵,我觉得生活就应该是这样,年轻时候的忙碌是为年老时候的悠闲吧。
   主要涉及内容及技术:
  javaexcel api
  jasonreport及编辑工具ireport和数据库技术。
 导入及导出EXCEL解决思路:
  使用javaexcel api导入普通的EXCEL表格,就是没有合并单元格的规范数据,如果导出有规则的EXCEL也使用JAVAEXECEL API,对中文支持比较好。
  如果要导出报表可打印的EXCEL,使用ireport为工具图形化画出报表,并使用jasonreprt控制导出,展示给客户端。
  主要代码有:
  连接数据库的方法:
java 代码
 
  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.SQLException;  
  4. import java.sql.Statement;  
  5. import java.util.Hashtable;  
  6. import java.util.Vector;  
  7.   
  8. import org.apache.log4j.Logger;  
  9.   
  10. public class DBOperate {     
  11.       
  12.     /** 
  13.      * 得到sequence的nextval 
  14.      * @param sequenceName  
  15.      * @return 
  16.      */  
  17.     public static String getSequence(String sequenceName) {  
  18.         String nextval = "";  
  19.         if(sequenceName == null || "".equals(sequenceName)) {  
  20.             System.out.println("sequenceName name is null!");             
  21.             return null;  
  22.         } else {  
  23.             sequenceName = sequenceName.toUpperCase();            
  24.             String sql = "select " + sequenceName + ".nextval nextid from user_sequences where sequence_name = '"   
  25.                        + sequenceName + "'";  
  26.               
  27.             Statement stmt = null;  
  28.             Connection conn = null;  
  29.             ResultSet rs = null;  
  30.               
  31.             try {  
  32.                 conn = TreatDB.getConnDB("");  
  33.                 if (conn != null) {  
  34.                     stmt = conn.createStatement();  
  35.                     rs = stmt.executeQuery(sql);  
  36.                       
  37.                     if(rs != null) {  
  38.                       while(rs.next()) {  
  39.                         nextval = rs.getString("nextid");                         
  40.                       }  
  41.                     }  
  42.                 }  
  43.             } catch (SQLException e) {  
  44.                 System.out.println("SQLException : " + e);  
  45.             } finally {  
  46.                 try {  
  47.                     if(rs != null) rs.close();  
  48.                     if(stmt != null) stmt.close();  
  49.                     if(conn != null) conn.close();  
  50.                 } catch (SQLException e) {  
  51.                     // TODO Auto-generated catch block                    
  52.                 }  
  53.             }  
  54.             return nextval;  
  55.         }  
  56.     }  
  57. /** 
  58.      * 一个插入、更新数据表的通用方法,传入一个sql脚本 
  59.      * @param sql :要进行操作的脚本 
  60.      * @return :发生变化的条数 
  61.      */  
  62.     public static int updateSql(String sql) {  
  63.         String dbName = "";  
  64.         Connection conn = null;  
  65.         Statement stmt = null;  
  66.         int result = 0;  
  67.         try {  
  68.             conn = TreatDB.getConnDB(dbName);  
  69.             if (conn != null) {  
  70.                 stmt = conn.createStatement();  
  71.                 //logger.info(sql);  
  72.                 result = stmt.executeUpdate(sql);                 
  73.                 conn.commit();  
  74.             }  
  75.   
  76.         } catch (SQLException e) {  
  77.             try {  
  78.                 conn.rollback();  
  79.             } catch (SQLException e1) {  
  80.                 System.out.println("update sql error: "+e);  
  81.                   
  82.             }             
  83.             System.out.println("update sql error: "+e);  
  84.             System.out.println("sql: " + sql);            
  85.         } finally {  
  86.             try {  
  87.                 if (stmt != null)  
  88.                     stmt.close();  
  89.                 if (conn != null)  
  90.                     conn.close();  
  91.             } catch (Exception ex) {  
  92.                 //do nothing;  
  93.             }  
  94.   
  95.         }  
  96.         return result;  
  97.     }  
  98.       
  99. }  
导入EXCEL的程序代码:
java 代码
 
  1. /** 
  2.      * 将Excel文件中的数据添加到数据库中 
  3.      * 新的监理信息 modify by heweiya 
  4.      *  
  5.      * @param xlsFile,Excel文件 
  6.      * @return 
  7.      */  
  8.     public String addJLXlsForm(InputStream is) {  
  9.           
  10.         String errStr = "";  
  11.         String result = "";       
  12.   
  13.         try {             
  14.             Workbook rwb = Workbook.getWorkbook(is);  
  15.             // Workbook rwb = Workbook.getWorkbook(new File(filePath+fileName));  
  16.             // 获取第一张Sheet表  
  17.             Sheet sheet = rwb.getSheet(0);  
  18.             // 获取总列数  
  19.             int rsColumns = sheet.getColumns();  
  20.             System.out.println("rsColumns = " + rsColumns);  
  21.               
  22.             // 获取总行数  
  23.             int rsRows = sheet.getRows();  
  24.             System.out.println("rsRows = " + rsRows);  
  25.               
  26.             if (rsColumns < 19) {  
  27.                 errStr = "错误原因:字段不全。";  
  28.                 vErr.addElement(errStr);  
  29.             }  
  30.               
  31.             int i = 0;  
  32.             int startRows = 1;  
  33.             int startColumn = 0;  
  34.             while (startRows < rsRows) {  
  35.                 Hashtable ht = new Hashtable();  
  36.                   
  37.                 String zj_id = DBOperate.getSequence("S_JIANLI");         
  38.   
  39.                   
  40.                 Cell tmp = sheet.getCell(0,startRows);                    
  41.                 String sfzh = tmp.getContents();      
  42.                   
  43.                 tmp = sheet.getCell(1,startRows);                     
  44.                 String issueDate = tmp.getContents();                 
  45.                 String issueDate_new = "";  
  46.                 if(issueDate != null && issueDate.length()>=6) issueDate_new = issueDate.substring(6) + issueDate.substring(3,5) + issueDate.substring(0,2);  
  47.                   
  48.                 tmp = sheet.getCell(2,startRows);                     
  49.                 String approveDate = tmp.getContents();               
  50.                 String approve_date_new = "";  
  51.                 if(approveDate != null && approveDate.length()>=6) approve_date_new = approveDate.substring(6) + approveDate.substring(3,5) + approveDate.substring(0,2);  
  52.               
  53.                 tmp = sheet.getCell(3,startRows);                     
  54.                 String cerNo = tmp.getContents();  
  55.                   
  56.                 tmp = sheet.getCell(4,startRows);                     
  57.                 String jianliMajor = tmp.getContents();               
  58.   
  59.                 tmp = sheet.getCell(5,startRows);                     
  60.                 String department = tmp.getContents();  
  61.                   
  62.                 tmp = sheet.getCell(6,startRows);                     
  63.                 String jianliName = tmp.getContents();  
  64.               
  65.                 tmp = sheet.getCell(7,startRows);                     
  66.                 String jianliSex = tmp.getContents();                         
  67.                   
  68.                 //毕业院校  
  69.                 tmp = sheet.getCell(8,startRows);                     
  70.                 String degree = tmp.getContents();  
  71.               
  72.                 //毕业时间  
  73.                 tmp = sheet.getCell(9,startRows);                     
  74.                 String cooleage = tmp.getContents();  
  75.               
  76.                 //所学专业  
  77.                 tmp = sheet.getCell(10,startRows);                    
  78.                 String company = tmp.getContents();  
  79.               
  80.                 //职务  
  81.                 tmp = sheet.getCell(11,startRows);                    
  82.                 String tech_post = tmp.getContents();                 
  83.                   
  84. //              工作单位  
  85.                 tmp = sheet.getCell(12,startRows);                    
  86.                 String address = tmp.getContents();               
  87.                   
  88. //              职称  
  89.                 tmp = sheet.getCell(13,startRows);                    
  90.                 String postcode = tmp.getContents();                  
  91.                   
  92.                 tmp = sheet.getCell(14,startRows);                    
  93.                 String jianliTel = tmp.getContents();  
  94.                   
  95.                 tmp = sheet.getCell(15,startRows);                    
  96.                 String mobile = tmp.getContents();  
  97.                   
  98.                 tmp = sheet.getCell(16,startRows);                    
  99.                 String email = tmp.getContents();  
  100.                   
  101.                 tmp = sheet.getCell(17,startRows);                    
  102.                 String birthday = tmp.getContents();                  
  103.                 String birthday_new = "";  
  104.                 if(birthday != null && birthday.length()>=6) birthday_new = birthday.substring(6) + birthday.substring(3,5) + birthday.substring(0,2);  
  105.                   
  106.                   
  107.                 tmp = sheet.getCell(18,startRows);                    
  108.                 String jianli_type = tmp.getContents();   
  109.                 //加入密码 modify by heweiya 2007/05/17  
  110.                 String sql = "insert into jianli values('" + zj_id + "', '" + sfzh + "', to_date('" + issueDate_new + "','yyyymmdd'),to_date('"  
  111.                    + approve_date_new + "','yyyymmdd'),'" + cerNo + "','" + jianliMajor + "','" + department + "','"  
  112.                    + jianliName + "','" + jianliSex + "','" + degree + "','" + cooleage + "','"   
  113.                    + company + "','" + tech_post + "','" + address + "','" + postcode + "','" + jianliTel   
  114.                    + "','" + mobile + "','" + email + "',to_date('" + birthday_new + "','yyyymmdd'),'" + jianli_type  + "',null,null,null,null,"+sfzh.substring(010)+",null,null,null,null,null)";  
  115.                   
  116.                 int a = DBOperate.updateSql(sql);  
  117.                   
  118.                 System.out.println("成功导入第"+startRows+"条");        
  119.                 if (a == 0) {  
  120.                     errStr = errStr + "添加失败:库中已有此记录,或有值不符合库中设定的字段属性!";  
  121.                 } else if (a == 1) {  
  122.                     result = "添加成功";  
  123.                 } else {  
  124.                     errStr = errStr + "添加失败:连接数据库失败";  
  125.                 }  
  126.                       
  127.                   
  128.   
  129.                 if (!"".equals(errStr)) {  
  130.                     vErr.addElement("导入:" + "【" + startRows + "】" + "<br>(错误原因:" + errStr);  
  131.                     errStr += "导入:" + "【" + startRows + "】" + "<br>(关键字段为:姓名:"+jianliName+",身份证号为:"+sfzh+",监理证书号为:"+cerNo+")<br>";  
  132.                 } else {  
  133.                     vOk.add(ht);  
  134.                 }  
  135.   
  136.                 startRows++;  
  137.             }  
  138.               
  139.             rwb.close();  
  140.             result = "成功导入:" + vOk.size()+"条记录。<br> 错误导入: " + vErr.size()+"条记录,错误记录及原因如下:<br>"+errStr;  
  141.             System.out.println("vOK.size() = " + vOk.size());  
  142.             System.out.println("VErr.size() = " + vErr.size());  
  143.             return result;  
  144.         } catch (Exception e) {  
  145.             result = "在导入的过程当中发生了错误,其中错误的原因是:" + e.toString();            
  146.             return result;  
  147.         }  
  148.     }  
导出报表的代码:
java 代码
 
  1. /** 
  2.  *  
  3.  * 导出报表 
  4.  *  
  5.  * @param 
  6.  * @return 
  7.  * @throws 
  8.  */  
  9. public ActionForward ExportXLS(ActionMapping mapping, ActionForm form,  
  10.         HttpServletRequest request, HttpServletResponse response)  
  11.         throws Exception {  
  12.     HttpSession session = request.getSession();  
  13.     String CerNo = (String) session.getAttribute("CerNo");// 登录名  
  14.     String JianliName = (String) session.getAttribute("JianliName");// 角色ID  
  15.     if (CerNo == null || JianliName == null) {  
  16.         return mapping.findForward("Fail");  
  17.     }  
  18.     File business_rpt = new File(getServlet().getServletConfig()  
  19.             .getServletContext().getRealPath("/report/water_jianli.jasper"));  
  20.     JasperPrint jasperPrint = null;  
  21.   
  22.     Map parameters = new HashMap();  
  23.     Jianli jianli = personalDAO.GetJianli(CerNo);  
  24.   
  25.     ReportModel report_user = new ReportModel();  
  26.     report_user.setCol1(jianli.getJianliName());// 姓名  
  27.     report_user.setCol2(jianli.getJianliSex());// 性别  
  28.     report_user.setCol3(jianli.getDegree());// 学历  
  29.     report_user.setCol4("'" + jianli.getSfzh());// 身份证  
  30.     report_user.setCol5(jianli.getTechPost());// 职称  
  31.     report_user.setCol6(jianli.getCerNo());// 证书编号  
  32.     report_user.setCol7(jianli.getJianliMajor());// 监理专业  
  33.     if (jianli.getOrgs() != null) {  
  34.         report_user.setCol8(jianli.getOrgs().getOrgName());// 隶属单位  
  35.     }  
  36.     report_user.setCol10(jianli.getAddress());  
  37.     report_user.setCol11(jianli.getJianliTel());  
  38.     /** 
  39.      * 加入简历的东东 
  40.      */  
  41.     List Ljianli = assistDAO.GetEngineerAssist(CerNo);  
  42.     if (Ljianli != null) {  
  43.         for (int i = 0; i < Ljianli.size(); i++) {  
  44.             Assistant assist = (Assistant) Ljianli.get(i);  
  45.             String begindate = "";  
  46.             String enddate = "";  
  47.             SimpleDateFormat sfDate = new SimpleDateFormat("yyyy/MM/dd");  
  48.             if (assist.getBegindate() != null) {  
  49.                 begindate = sfDate.format(assist.getBegindate());  
  50.             }  
  51.             if (assist.getEnddate() != null) {  
  52.                 enddate = sfDate.format(assist.getEnddate());  
  53.             }     
  54.             String deptname = (assist.getAtdeptname() == null)?"":assist.getAtdeptname();  
  55.             String zewu = (assist.getAssistname() == null)?"":assist.getAssistname();  
  56.             String huihua = "开始日期为:" + begindate + ",结束日期为:" + enddate  
  57.                     + ",所在工作单位"+deptname+",担任职务为:" + zewu+"。";  
  58.             if (assist.getOther() != null){  
  59.          &nbs
分享到:
评论
1 楼 yskfss 2011-07-12  
好像不全呀

相关推荐

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

    - 数据校验:在将Excel数据导入数据库前,进行数据格式和完整性检查。 - 错误处理:捕获并处理可能出现的异常,如文件读取错误、数据库连接失败等。 - 性能优化:大量数据导入时,可以使用批处理操作,减少与数据库...

    excel和数据库之间数据的导入导出

    1. **Excel到数据库**: 当你需要将Excel中的数据存储到数据库中时,可以使用SQL Server Management Studio (SSMS) 的“导入和导出数据”工具。该工具支持从Excel文件直接导入数据到SQL Server表中,只需要指定Excel...

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    其次,从数据库导出数据到Excel则相对简单: 1. 查询数据:使用SQL语句查询需要导出的数据,可以是整个表,也可以是满足特定条件的部分数据。 2. 输出格式设置:确定数据导出的格式,例如CSV或TSV,这两种格式可以...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    百万级数据在Excel和Sql数据库之间相互导入、导出

    4. **Power Query/Microsoft Query**:Power Query(在Excel 2016及以后版本中)或Microsoft Query(在较早版本中)允许用户通过查询语言直接与SQL Server交互,支持数据的导入和导出。 5. **编程接口**:对于自动...

    Excel导入导出数据库Excel批量导入导出数据库

    首先,我们来看Excel导入数据库的过程。通常,这涉及到读取Excel文件的数据并将其存储到数据库中。在Python中,我们可以使用pandas库来处理Excel文件(通过`pandas.read_excel()`函数)和SQLAlchemy库来与数据库进行...

    java实现Excel数据导入到数据库

    在Java编程环境中,将Excel数据导入到数据库以及将数据库数据导出到Excel是常见的数据处理需求。本篇文章将深入探讨如何使用Java实现这两个功能,主要涉及的技术栈包括Apache POI库用于操作Excel,以及JDBC(Java ...

    spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库.zip

    在本项目中,"spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库",开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据...

    asp将EXCEL导入导出数据库原程序

    这个"asp将EXCEL导入导出数据库原程序"提供了一个解决方案,能够方便地将Excel中的数据存入MSSQL数据库,同时也能将数据库中的数据导出到Excel文件。 首先,我们需要了解如何使用ASP连接MSSQL数据库。通常,这涉及...

    excel导入数据到Oracle数据库

    ### Excel导入数据到Oracle数据库详解 #### 一、前言 在日常工作中,我们经常会遇到需要将Excel中的数据批量导入到Oracle数据库的情况。这一过程不仅可以提高工作效率,还能确保数据的一致性和准确性。本文将详细...

    excel批量导入数据库

    4. Excel插件:例如,SQL Server有SQL Server Import and Export Wizard,可以导出Excel数据到SQL Server。 5. 自定义脚本:使用VBA(Visual Basic for Applications)编写宏,实现Excel数据的自动化导入。 四、...

    Excel导入数据库and数据库数据导入Excel

    在IT领域,Excel和数据库之间的数据交互是常见的需求,特别是...无论是Excel导入数据库还是数据库数据导出到Excel,都需要对数据格式、数据转换、异常处理和性能优化有深入的理解,以确保数据的准确性和系统的稳定性。

    EXCEL导入数据库及反向导出 源代码

    标题中的“EXCEL导入数据库及反向导出 源代码”指的是使用编程技术实现Excel文件与数据库之间的数据交换。这种操作在数据处理和分析中非常常见,特别是在需要大量数据导入到数据库进行处理或者从数据库导出数据进行...

    数据库和excel之间的导入导出

    总的来说,熟练掌握数据库和Excel之间的导入导出技巧,对于数据工作者来说是至关重要的技能。这不仅可以提高工作效率,还能在各种数据处理和分析场景中发挥关键作用。通过不断学习和实践,我们可以更好地应对日益...

    Excel大量数据快速导入数据库源码

    标题 "Excel大量数据快速导入数据库源码" 描述的是一个编程解决方案,用于高效地将Excel电子表格中的大量数据批量导入到数据库系统中。这个过程通常涉及到数据预处理、数据清洗和数据传输等步骤,是数据处理工作流程...

    Excel 导出数据到数据库

    本文将深入探讨“Excel导出数据到数据库”这一主题,讲解如何高效地将Excel中的数据导入到数据库系统,以实现数据的统一管理和分析。 一、Excel的数据整理与预处理 在导出数据之前,首先需要对Excel中的数据进行...

    数据库与Excel中数据导入导出

    1. **Excel导入数据库**: - **直接连接**:使用Excel的数据连接功能,可以直接连接到数据库,实时获取数据,形成数据透视表或图表。 - **CSV/文本文件**:将Excel数据另存为CSV(逗号分隔值)文件,然后通过...

    Excel导入导出数据库小工具(附源码)

    首先,Excel导入数据库功能的实现主要涉及两部分:数据读取和数据库写入。使用C#,我们可以借助Microsoft.Office.Interop.Excel库来操作Excel文件,读取其中的数据。通过创建Excel应用程序对象,打开工作簿,选择...

    用EXCEL批量导入数据库.rar

    对于不熟悉SQL的用户,很多数据库管理系统提供了图形化界面,如SQL Server的SSIS(SQL Server Integration Services)、MySQL的LOAD DATA INFILE等,可以设置数据源、目标表和映射规则,实现Excel到数据库的批量导入...

Global site tag (gtag.js) - Google Analytics