`

excel批量导入

阅读更多
最近的一个项目又用到了excel导入这么个功能,虽然以前做过,但是事隔一年多,已经一年多,早忘了,看了网上的一些资料,讲得不是很到位,花了点时间整理了一下,今天有一点空,就把它记录下来:
主要用到的技术有:
jxl.jar(只这一包就可以,很简单)
spring jdbcTemplate

由于是批量导入,如果直接使用hibernate,效率有些低,所以直接使用jdbcTemplate,从最基本的入手:

List<Question> questions = new ArrayList<Question>();
		Question question = null;
		try {
			Workbook book = Workbook.getWorkbook(new File("d:/Test.xls"));

			// 获得第一个sheet,默认有三个
			Sheet sheet = book.getSheet(0);
			// 一共有多少行多少列数据
			int rows = sheet.getRows();
			int columns = sheet.getColumns();

			boolean hasText = false;
			for (int i = 0; i < rows; i++) {
				// 过滤掉没有文本内容的行
				for (int j = 0; j < columns; j++)
					if (sheet.getCell(j, i).getContents() != "") {
						hasText = true;
						break;
					}
				if (hasText) {
					question = new Question();
					question.setTitle(sheet.getCell(0, i).getContents());
					question.setType1(sheet.getCell(1, i).getContents());
					question.setType2(sheet.getCell(2, i).getContents());
					question.setType(Integer.valueOf(sheet.getCell(3, i)
							.getContents()));
					question.setScore(Integer.valueOf(sheet.getCell(4, i)
							.getContents()));
					question.setA(sheet.getCell(5, i).getContents());
					question.setB(sheet.getCell(6, i).getContents());
					question.setC(sheet.getCell(7, i).getContents());
					question.setD(sheet.getCell(8, i).getContents());
					question.setE(sheet.getCell(9, i).getContents());
					question.setTrueAnswer(sheet.getCell(10, i).getContents());
					questions.add(question);
				}
			}
			book.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return questions;


上面代码的作用就是将指定路径的excel文件放在一个List内。这个步骤比想象的的确要简单一些,居然就这么点代码就能完成excel导入java list的工作,下面进一步要做的就是,将其导入数据库,本来原来是打算用hibernate的,经过网上查找,发现都存在不少问题,于是就打算采用jdbcTemplate,而jdbcTemplate使用起来也非常的简单,首先需要配置jdbcTemplate bean,配置方法与配置hibernateTemplate差不多:

.....
<bean id="myJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource"><ref bean="dataSource"/></property>
    </bean>
.....


然后将其注入相应的dao中,就可以进入实际插入操作了:

....
public void batchInsert(final List<Question> q) {
		// TODO Auto-generated method stub
		final List<Question> questions = getQuestionsByXls();
		final int size = questions.size();
		String sql = "insert into question(title,type,type1,type2,state,creationTime,checked,score,a,b,c,d,e,trueAnswer) "
				+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		myJdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

			public int getBatchSize() {
				// TODO Auto-generated method stub
				return size;
			}

			// i - index of the statement we're issuing in the batch, starting
			// from 0
			public void setValues(PreparedStatement ps, int i)
					throws SQLException {
				Question question = questions.get(i);
				ps.setString(1, question.getTitle());
				ps.setInt(2, question.getType());
				ps.setString(3, question.getType1());
				ps.setString(4, question.getType2());
				ps.setInt(5, 1);
				ps.setDate(6, new Date(new java.util.Date().getTime()));
				ps.setInt(7, 0);
				ps.setInt(8, question.getScore());
				ps.setString(9, question.getA());
				ps.setString(10, question.getB());
				ps.setString(11, question.getC());
				ps.setString(12, question.getD());
				ps.setString(13, question.getE());
				ps.setString(14, question.getTrueAnswer());
			}
		});
	}
...


上面这段代码与原始的jdbc几乎没什么区别,需要注意的是,setValues()方法参数中,有个i,这个参数的意思注释已经说了。当然还有叫getBatchSize()的方法,文档中说过,"This method will be called the number of times that you specified in the getBatchSize call",就是说,getBatchSize返回的数字表示要插入的数据的条数。
分享到:
评论

相关推荐

    excel批量导入数据库

    本篇文章将详细讲解如何实现“Excel批量导入数据库”,以及利用小工具提高效率。 一、Excel与数据库的交互原理 Excel数据批量导入数据库的过程涉及数据的读取、转换和存储。首先,Excel文件(通常是.XLSX或.XLS格式...

    如何使用驰骋工作流引擎的Excel批量导入功能发起流程

    驰骋工作流引擎Excel批量导入功能发起流程知识点 一、驰骋工作流引擎简介 驰骋工作流引擎是一种强大的工作流引擎,能够帮助用户快速搭建、配置和执行业务流程。它提供了强大的流程管理功能,能够满足企业的各类...

    excel批量导入oracle数据库

    本文将详细讲解如何使用Excel批量导入Oracle数据库,这是一个常见的需求,特别是在数据分析和报表生成等领域。 首先,我们需要了解Excel和Oracle数据库的基本概念。Excel是一款由Microsoft开发的电子表格应用程序,...

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...

    Asp.net Excel批量导入数据到SqlServer数据库

    Asp.net Excel批量导入数据到SqlServer数据库 本文将详细介绍如何使用 Asp.net 实现从 Excel 文件批量导入数据到 SqlServer 数据库中。该操作可以大大提高数据导入效率,缩短数据处理时间。 标题解释 Asp.net ...

    ASP.NET Excel批量导入

    ASP.NET Excel批量导入是一项常见的数据处理任务,尤其在企业级应用中,经常需要将大量结构化数据从Excel表格快速导入到数据库中。本教程将详细讲解如何利用ASP.NET技术实现这一功能。 首先,我们需要理解ASP.NET的...

    excel 批量 导入

    Excel批量导入通常用于将数据快速地导入数据库或者应用程序,提高工作效率。在本例中,我们将探讨如何使用Java和相关的库来实现这个功能,主要涉及的工具包括jxl.jar(用于读取Excel文件),以及Spring的...

    Spring框架实现Excel批量导入数据

    以上就是使用Spring框架实现Excel批量导入数据的基本步骤。通过这种方式,可以极大地提高数据录入的效率,降低手动操作的工作量,尤其适用于需要频繁处理大量数据的业务场景。在实际项目中,可以根据具体需求进行...

    博客“Excel批量导入表结构到power designer”的附件

    博客“Excel批量导入表结构到power designer”的附件 http://blog.csdn.net/wzjin/article/details/30066175

    spring3.2.5 MVC Poi3.9操作excel批量导入

    总之,"spring3.2.5 MVC Poi3.9操作excel批量导入"是一个涵盖了Web开发、数据处理和文件操作的综合技术主题。结合Spring MVC的灵活性、Apache POI的强大文件处理能力以及Maven的项目管理,开发者可以构建出强大且...

    用EXCEL批量导入数据库.rar

    "用EXCEL批量导入数据库"这个主题涉及到的是一系列实用的技术,可以帮助用户提高工作效率,减少手动输入的错误。 首先,理解Excel的基本操作是必要的。Excel提供了丰富的公式、函数和数据分析工具,比如VLOOKUP、IF...

    excel批量导入access asp源码

    标题中的“Excel批量导入Access ASP源码”是指一种ASP(Active Server Pages)程序,用于将大量数据从Excel表格批量导入到Access数据库。这种技术在处理大量数据时非常有用,特别是对于那些需要定期更新数据库或者从...

    基于SpringBoot、JDBC、Mybatis和EasyExcel的Java Excel批量导入导出设计源码

    该项目是一款基于SpringBoot、JDBC、Mybatis和EasyExcel的Java Excel批量导入导出解决方案源码,包含22个文件,其中包括10个Java源文件、2个Markdown文件、2个XML文件、1个Git忽略文件、1个JAR包文件、1个属性文件、...

    java poi操作excel批量导入导出项目需要的jar包

    在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: Apache POI是一个开源项目,它提供了API来处理Microsoft的文件...

    微信小程序云开发 Excel批量导入数据库

    本项目聚焦于通过云函数实现Excel文件的批量导入到数据库的功能,利用了开源模块`node-xlsx`。 `node-xlsx`是一个Node.js环境下的库,专门用于处理Excel文件。它能够读取Excel文件,并将其解析为JSON格式的数据,...

    Java 实现从Excel批量导入数据到MySQL

    本文将详细介绍如何利用Java实现从Excel批量导入数据到MySQL数据库。 首先,我们需要了解两个关键的库:Apache POI 和 JDBC。Apache POI 是一个开源的Java库,用于读写Microsoft Office格式的文件,包括Excel。JDBC...

    jxl excel批量导入

    标题中的“jxl excel批量导入”指的是使用Java的jxl库来处理Excel文件,实现数据的批量读取和写入。jxl是一个广泛使用的开源Java库,它允许开发者读取、写入和修改Microsoft Excel文件。这个过程在处理大量数据时...

    Excel批量导入数据库

    在IT领域,Excel批量导入数据库是一项常见的任务,尤其在数据处理和分析中。这个名为"Excel批量导入数据库"的示例(ExcelDemo)提供了一种自动化的方法,将Excel文件中的数据高效地导入到数据库中。这通常涉及到使用...

Global site tag (gtag.js) - Google Analytics