`
yunhuisdu19811011
  • 浏览: 94735 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论
  • fightingIOW: 案例看了,能实现上传,但是不是异步的,怎么改成页面可以预览呢? ...
    swfUpload实例
  • kizz: 您好,实例我看了,确实不错。您有struts2版的吗?现在项目 ...
    swfUpload实例

从excel向数据库导入数据

    博客分类:
  • java
阅读更多

第一步:

/**
     * 得到导入的excel数据并进行判断,不允许有重复的身份证号
     *
     * @param filePath
     *            上传的文件的路径
     * @param tableName
     *            导入数据库的表名
     */
    public List excelImport(String filePath, String tableName,
            String[] tableColumm) {
        // 得到excel文件
        File file = new File(filePath);
        List list = new ArrayList();
        try {
            Workbook book = Workbook.getWorkbook(file);
            // 得到工作簿中的第一个表索引即为excel下的sheet1,sheet2,sheet3...
            Sheet sheet = book.getSheet(0);
            list = excelSj(sheet, tableName, tableColumm);
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }

 

第二步:

/**
     * 导入excel表数据
     *
     * @param sheet
     *            单元表
     * @param tableName
     *            导入的数据库表名
     */
    public List excelSj(Sheet sheet, String tableName, String[] tableColumm) {
        int rows = sheet.getRows();
        List list = new ArrayList();
        for (int i = 1; i < rows; i++) {
            Cell[] cells = sheet.getRow(i);
            if (cells.length == 0) {
                continue;
            } else {
                // 转换excel中的数据
                String[] strs = changeCells(cells, tableColumm);
                // 验证excel里的内容(身份证号的位数和身份证号不允许重复)
                Map map = validateCells(strs);
                if (!map.isEmpty()) {
                    // 如果map为空则执行插入操作
                    addData(tableName, tableColumm, strs);
                } else {
                    list.add(map);
                }
            }
        }
        return list;
    }

第三步:

    // 转换excel中的数据
    public String[] changeCells(Cell[] cells, String[] tableColumm) {
        int colummLength = tableColumm.length;
        String[] strs = new String[colummLength];
        for (int i = 0; i < cells.length; i++) {
            // 看看cell为空时怎么显示的
            String str = cells[i].getContents();
            if (str == null || "''".equals(str)) {
                strs[i] = null;
            } else {
                strs[i] = cells[i].getContents().trim();
            }
        }
        return strs;
    }

第四步:

    // 验证excel里的内容(身份证号的位数和身份证号不允许重复)
    public Map validateCells(String[] strs) {
        Map map = new HashMap();
        // 暂时这里写死了,实际长度为2位
        if (strs[0] == null || "".equals(strs[0])) {
            map.put(strs[0], strs[1]);
        }
        if (strs[0] != null && !"".equals(strs[0])) {
            if (strs[1] == null || "".equals(strs[1])) {
                map.put(strs[0], strs[1]);
            } else {
                // 验证身份证号是否存在
                boolean flag = validateCid(strs[1]);
                if (!flag) {
                    map.put(strs[0], strs[1]);
                }
            }
        }
        return map;
    }
第五步

// 做插入数据的操作
    // tableColumm 数据库中的属性 strs excel表中转换的数据
    public boolean addData(String tableName, String[] tableColumm, String[] strs) {
        boolean flag = false;
        String sql = "";
        String atrrSql = "";
        String excelSql = "";
        String cols = "";
        String values = "";
        if (strs.length > 0) {
            for (int i = 0; i < tableColumm.length - 1; i++) {
                atrrSql += tableColumm[i] + ",";
                excelSql += "'"+strs[i] +"'"+ ",";
            }
            cols = atrrSql + tableColumm[tableColumm.length - 1];
            values = excelSql + "'"+strs[strs.length - 1]+"'";
            sql = " insert into " + tableName + "(" + cols + ") values ("
                    + values + ")";
        }
        try {
            flag = baseDao.insert(sql);
        } catch (ToolException e) {
            e.printStackTrace();
        }
        return flag;
    }

 

导入的包


import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jxl.Cell;
import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;


import org.apache.commons.fileupload.FileItem;
import org.apache.log4j.Logger;

import sdzn.util.page.PageData;
import dao.jdbc.databasedao.IBaseDao;
import dao.jdbc.databasedao.ToolException;

分享到:
评论

相关推荐

    EXcel向数据库导入数据

    EXcel向数据库导入数据

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

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

    C#将数据导入excel和Excel数据导入数据库

    6. 调用`SqlDataAdapter.Update()`方法,将数据从数据表更新到数据库。 在这个过程中,你可能需要处理异常,确保数据验证,并优化批量插入以提高性能。例如,你可以使用`SqlBulkCopy`类一次性导入大量数据,而不是...

    excel批量导入数据库

    然而,当需要将大量数据从Excel导入到数据库时,手动操作不仅耗时,还容易出错。本篇文章将详细讲解如何实现“Excel批量导入数据库”,以及利用小工具提高效率。 一、Excel与数据库的交互原理 Excel数据批量导入...

    excel导入数据到Oracle数据库

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

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

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

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

    该工具支持从Excel文件直接导入数据到SQL Server表中,只需要指定Excel文件的位置、表名和数据源即可。 2. **VBA编程**: 对于高级用户,可以通过编写VBA宏在Excel中直接执行SQL命令,将数据插入到数据库。这种方式...

    从Excel中读取数据导入到数据库中

    数据库导入通常涉及以下步骤: 1. **建立数据库连接**:使用适当的库(如`psycopg2` for PostgreSQL,`pyodbc` for SQL Server)创建连接。 2. **创建表结构**:根据Excel数据的结构,在数据库中创建对应的表结构,...

    DELPHI 从EXCEL导入到数据库

    标题中的"DELPHI 从EXCEL导入到数据库"是一个关于使用Delphi编程语言将Excel电子表格中的数据导入到数据库的应用实例。这个话题涉及到多个IT领域的知识点,包括Delphi编程、Excel文件处理以及数据库交互。 Delphi是...

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

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

    java读取excel数据导入数据库源码

    java读取excel数据导入数据库源码 java读取excel数据导入数据库源码

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

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

    C# Excel导入数据库

    在软件开发领域,特别是在企业级应用中,经常需要处理大量的数据,而 Excel 文件作为一种常见的数据存储格式,其数据导入到数据库中的需求非常普遍。本篇文章将深入探讨如何使用 C# 来实现 Excel 数据的导入,并通过...

    Java实现从excel中批量导入数据到数据库

    Java实现从excel中批量高效导入数据到数据库中,包括图片的导入存储,读取图片显示在jsp页面等,需要下载JspSmartUpload.jar和jxl.jar两个jar包,将两个包导入项目才能运行

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    在VB(Visual Basic)编程环境中,常常需要处理数据导入导出的问题,特别是在处理大量数据时,Excel和Access数据库之间的交互显得尤为重要。标题提到的“vb批量将excel数据导入access以及批量将access数据库中的数据...

    C#Excel大量数据快速导入数据库

    当需要处理Excel中的大量数据并将其快速导入到数据库时,C#提供了一些高效的方法来实现这一目标。本文将详细讲解如何利用C#实现Excel数据的高效导入。 首先,我们需要了解如何在C#中读取Excel文件。.NET Framework...

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

    4. **数据映射**:在导入数据时,可能需要将Excel列与数据库表的字段进行映射,`Frm_SetColumns.cs`可能实现了这一功能,允许用户选择或指定Excel列对应数据库的哪个字段。 5. **SQL批量插入**:`Winform_...

    vb.net将excel中的数据导入到数据库

    接下来是将数据从Excel导入到SQL Server的关键步骤。这里使用了`SqlDataAdapter`和`SqlCommandBuilder`来处理数据插入操作: ```vb Dim dataTable1 As DataTable = New DataTable() Dim sqlDA1 As SqlClient....

Global site tag (gtag.js) - Google Analytics