最近的一个项目又用到了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文件(通常是.XLSX或.XLS格式...
驰骋工作流引擎Excel批量导入功能发起流程知识点 一、驰骋工作流引擎简介 驰骋工作流引擎是一种强大的工作流引擎,能够帮助用户快速搭建、配置和执行业务流程。它提供了强大的流程管理功能,能够满足企业的各类...
本文将详细讲解如何使用Excel批量导入Oracle数据库,这是一个常见的需求,特别是在数据分析和报表生成等领域。 首先,我们需要了解Excel和Oracle数据库的基本概念。Excel是一款由Microsoft开发的电子表格应用程序,...
在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...
Asp.net Excel批量导入数据到SqlServer数据库 本文将详细介绍如何使用 Asp.net 实现从 Excel 文件批量导入数据到 SqlServer 数据库中。该操作可以大大提高数据导入效率,缩短数据处理时间。 标题解释 Asp.net ...
ASP.NET Excel批量导入是一项常见的数据处理任务,尤其在企业级应用中,经常需要将大量结构化数据从Excel表格快速导入到数据库中。本教程将详细讲解如何利用ASP.NET技术实现这一功能。 首先,我们需要理解ASP.NET的...
Excel批量导入通常用于将数据快速地导入数据库或者应用程序,提高工作效率。在本例中,我们将探讨如何使用Java和相关的库来实现这个功能,主要涉及的工具包括jxl.jar(用于读取Excel文件),以及Spring的...
以上就是使用Spring框架实现Excel批量导入数据的基本步骤。通过这种方式,可以极大地提高数据录入的效率,降低手动操作的工作量,尤其适用于需要频繁处理大量数据的业务场景。在实际项目中,可以根据具体需求进行...
博客“Excel批量导入表结构到power designer”的附件 http://blog.csdn.net/wzjin/article/details/30066175
总之,"spring3.2.5 MVC Poi3.9操作excel批量导入"是一个涵盖了Web开发、数据处理和文件操作的综合技术主题。结合Spring MVC的灵活性、Apache POI的强大文件处理能力以及Maven的项目管理,开发者可以构建出强大且...
"用EXCEL批量导入数据库"这个主题涉及到的是一系列实用的技术,可以帮助用户提高工作效率,减少手动输入的错误。 首先,理解Excel的基本操作是必要的。Excel提供了丰富的公式、函数和数据分析工具,比如VLOOKUP、IF...
标题中的“Excel批量导入Access ASP源码”是指一种ASP(Active Server Pages)程序,用于将大量数据从Excel表格批量导入到Access数据库。这种技术在处理大量数据时非常有用,特别是对于那些需要定期更新数据库或者从...
该项目是一款基于SpringBoot、JDBC、Mybatis和EasyExcel的Java Excel批量导入导出解决方案源码,包含22个文件,其中包括10个Java源文件、2个Markdown文件、2个XML文件、1个Git忽略文件、1个JAR包文件、1个属性文件、...
在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。以下是关于使用Java POI进行Excel操作的关键知识点: 1. **Apache POI介绍**: Apache POI是一个开源项目,它提供了API来处理Microsoft的文件...
本项目聚焦于通过云函数实现Excel文件的批量导入到数据库的功能,利用了开源模块`node-xlsx`。 `node-xlsx`是一个Node.js环境下的库,专门用于处理Excel文件。它能够读取Excel文件,并将其解析为JSON格式的数据,...
本文将详细介绍如何利用Java实现从Excel批量导入数据到MySQL数据库。 首先,我们需要了解两个关键的库:Apache POI 和 JDBC。Apache POI 是一个开源的Java库,用于读写Microsoft Office格式的文件,包括Excel。JDBC...
标题中的“jxl excel批量导入”指的是使用Java的jxl库来处理Excel文件,实现数据的批量读取和写入。jxl是一个广泛使用的开源Java库,它允许开发者读取、写入和修改Microsoft Excel文件。这个过程在处理大量数据时...
在IT领域,Excel批量导入数据库是一项常见的任务,尤其在数据处理和分析中。这个名为"Excel批量导入数据库"的示例(ExcelDemo)提供了一种自动化的方法,将Excel文件中的数据高效地导入到数据库中。这通常涉及到使用...