读取excel内容到数据库
2011-09-26 14:18
309 查看
最近在做一个小项目遇到一个问题,对于一个科研学科,分为一级学科和二级学科,且这些数据都是放在一个excel文件中。数据量接近900行,如果手工录入肯定会疯掉,说不定还会录错,既然咱是程序猿
肯定不用自己去干这么傻的事。网上溜达了一下找到一个解决方案。
1、首先到网上去找一个jxl.jar的jar包,加入到项目中。(注意一点:此jar包不支持excel2007+版本)
2、将要读取的资源放到硬盘上容易找到的地方,为了方便我就放在D盘下了。
3、加入数据库连接jar包,写一个数据库管理类
DBManager:
4、ok,现在就来进入主要部分编写转换代码
5、贴上数据库建表语句
看一下运行结果:
好了这个小demo完成了,希望可以帮到大家!!
所有用到的素材都打包好了,有需要的同学可以自己去下载。
http://download.csdn.net/detail/akwolf/3636901
肯定不用自己去干这么傻的事。网上溜达了一下找到一个解决方案。
1、首先到网上去找一个jxl.jar的jar包,加入到项目中。(注意一点:此jar包不支持excel2007+版本)
2、将要读取的资源放到硬盘上容易找到的地方,为了方便我就放在D盘下了。
3、加入数据库连接jar包,写一个数据库管理类
DBManager:
package com.akwolf.transform; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBManager { private String url = "jdbc:mysql://localhost:3306/mytest"; private volatile static DBManager dbManger; private Connection conn ; private DBManager(){ } public static DBManager getInstance() { if (dbManger == null) { synchronized (DBManager.class) { if (dbManger == null) { try { Class.forName("com.mysql.jdbc.Driver") ; } catch (ClassNotFoundException e) { e.printStackTrace(); } dbManger = new DBManager(); } } } return dbManger; } public Connection getConnection() { try { conn = DriverManager.getConnection(url, "zhangh", "123456"); } catch (SQLException e) { e.printStackTrace(); } return conn; } public void realse(){ if(conn!=null){ try { conn.close() ; } catch (SQLException e) { e.printStackTrace(); } } } }
4、ok,现在就来进入主要部分编写转换代码
package com.akwolf.transform; import java.io.File; import java.sql.Connection; import java.sql.Statement; import jxl.Sheet; import jxl.Workbook; /** * 读取Excel到数据库 * * @author zhanghua * */ public class TransformExcel { public static void main(String[] args) throws Exception { File file = new File("D:" + File.separator + "subject.xls"); //取得一个可以操作的excel Workbook workbook = Workbook.getWorkbook(file); Sheet[] sheet = workbook.getSheets(); Connection conn = DBManager.getInstance().getConnection();// 取得连接 TransformExcel excel = new TransformExcel(); String sn = "", intro = "", sql = "", firstSn = ""; boolean insert = true; //是否向数据库中插入数据,若一行数据为空据不进行插入 for (int x = 0; x < sheet.length; x++) { for (int y = 0; y < sheet[x].getRows(); y++) { boolean first = false; for (int z = 0; z < sheet[x].getColumns(); z++) { String content = sheet[x].getCell(z, y).getContents(); // 本行为空 if (z == 0 && content.equals("")) { insert = false; break; } // 如果是一级学科 if (content.length() == 3 && z == 0) { firstSn = content; first = true; } //设置每列的数据库 if (z == 0) { sn = content; } else if (z == 1) { intro = content; } } //拼装sql语句 if (first) { sql = "insert into firstsubject(first_subject_id,first_subject_name) values('" + sn + "','" + intro + "')"; first = false; } else { sql = "insert into secondsubject(second_subject_id,second_subject_name,first_subject_id) values('" + sn + "','" + intro + "','" + firstSn + "')"; } //是否可以插入到数据库 if (insert) { excel.insertIntoDB(conn, sql); }else{ insert = true; } } } DBManager.getInstance().realse(); } public void insertIntoDB(Connection conn, String sql) throws Exception { Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); } }
5、贴上数据库建表语句
set foreign_key_checks=0; create table if not exists firstsubject ( first_subject_id varchar(100) not null, -- 一级学科主键 first_subject_name varchar(255) null, -- 一级学科名称 isdel bit(1) default b'0', -- defautlt 0,删除标记位 balance int(11) null, -- 排序 primary key (first_subject_id) ); create table if not exists secondsubject ( second_subject_id varchar(100) not null, -- 二级学科主键 second_subject_name varchar(255) null, -- 二级学科名称 first_subject_id varchar(100) not null, -- 关联firstsubject.first_subject_id isdel bit(1) default b'0', -- defautlt 0,删除标记位 balance int(11) null, -- 排序 primary key (second_subject_id), key first_second_fk (first_subject_id), constraint first_second_fk foreign key (first_subject_id) references firstsubject (first_subject_id) on delete cascade on update cascade );
看一下运行结果:
好了这个小demo完成了,希望可以帮到大家!!
所有用到的素材都打包好了,有需要的同学可以自己去下载。
http://download.csdn.net/detail/akwolf/3636901
相关文章推荐
- 读取Excel内容,导入数据库多张表!
- php 读取excel中的内容到mysql 数据库
- php excel reader读取excel内容存入数据库实现代码
- Android_读取Excel_更改Excel内容,数据库保存数据
- yii2从excel文件中读取表格内容,并批量写入数据库
- springMVC 读取excel内容并写入数据库
- JSP-从数据库读取内容,并生成Excel(含全部代码)
- php excel reader读取excel内容存入数据库实现代码
- php-excel-reader读取excel内容存入数据库
- 测试sq3数据库,读取数据库把内容输出到csv文件,附上输出到excel方法
- php 读取excel中的内容到mysql 数据库
- c#读取Excel并显示出来,然后存入数据库.
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
- 已解决问题:从Excel中读数据到数据库,本地VS运行都成功,网站发布后不能读取数据
- ASP.NET实现读取Excel内容并在Web上显示
- 使用java读取Excel文件内容
- ASP.NET中读取Excel内容,并显示在界面上
- ASP.NET读取Excel中的数据转存到数据库(二)
- 【原创】上传EXCEL并把内容批量写入指定数据库
- 读取Excel的内容,实现数据批量上传