Java:将Excel数据导入到数据库(一眼就看会)
所用Jar包
1. sqljdbc4.jar
连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008)
2.Jxl.jar
访问Excel的Jar包
注意:支持以.xls结尾的Excel文件,可能不支持.xlsx结尾的
Excel数据:
完整代码:
package xsl; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException; public class Test { public static void main(String[] args) { //1. java读取Excel文档内容
String filePath = "C:/Users/0223000320/Desktop/student.xls";
InputStream is = null;
Workbook rwb = null; try {
is = new FileInputStream(filePath);//定义文本输入流
} catch (FileNotFoundException e) {
e.printStackTrace();
} try {
rwb = Workbook.getWorkbook(is);//打开Workbook
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//获取Excel表的Sheet1区域的数据
Sheet sht = rwb.getSheet("Sheet1"); //或者rwb.getSheet(0)获取第一个区域
int col = sht.getColumns(); //获得Excel列
int row = sht.getRows(); //获得Excel行 //定义一维数组,存放Excel表里的每一行的各个列的数据
Object[] obj = null;
//定义List集合,存放每一行的数据
ArrayList<Object[]> list = new ArrayList<Object[]>(); Cell c1 = null; try {
//2. 连接数据库的几行代码
Connection con = null;
PreparedStatement ps = null;
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test;";
String sql = "INSERT INTO student(id, name, age) VALUES (?, ?, ?)";
con = DriverManager.getConnection(url, "sa", "Rfid123456");
con.setAutoCommit(true); //设置自动提交,默认也是TRUE,可不写
ps = con.prepareStatement(sql);// SQL预处理 //3. 读取Excel文档每个单元格的值
//先将数据按行装入一个一维数组Object[]中, 然后将数组逐个加入到ArrayList
for(int i=0; i < row; i++){
obj = new Object[col];
for(int j =0 ;j <col; j++){
c1 = sht.getCell(j,i);
//add
String contents = c1.getContents();
System.out.println(contents);
obj[j] = c1.getContents();
}
System.out.println("------------");
list.add(obj);
} //4. 再从list获取每条记录,插入数据库
obj = new Object[3];
for(int k = 0; k < row; k++){
obj = list.get(k);
ps.setString(1, obj[0].toString());
ps.setString(2, obj[1].toString());
ps.setString(3, obj[2].toString());
ps.addBatch(); }
ps.executeBatch(); //批量执行
ps.close();
con.close(); } catch (SQLException e) {
e.printStackTrace();
} } }
数据库插入情况:
控制台打印:
2
aa
23
------------
3
bb
54
------------
4
45
------------
简单来说,核心代码就是以下几行:
InputStream is = fileList.get().getInputStream();
Workbook rwb = Workbook.getWorkbook(is);
Sheet st = rwb.getSheet();
Map<String, String> map = new HashMap<String, String>();
int Rows = sheet.getRows();
for (int i = ; i < Rows; i++) {
int id = sheet.getCell(, i).getContents();//获取第1行第i列
String name = sheet.getCell(, i).getContents().trim();//获取第2行第i列
int age = sheet.getCell(, i).getContents();//获取第3行第i列
map.put(id , name + "&" + age); } return map;
list和map根据情况选择,上面的几行代码是简单说明,并不是完整代码,根据需要做处理
动态获取Excel表头指定字符串所在列:
for(int i = ; i < sheet.getColumns(); i++){
String str = sheet.getCell(i, ).getContents();
if(str.equals("id")){
System.out.println("id:" + i);
}
if(str.equals("name")){
System.out.println("name:" + i);
}
if(str.equals("deleted")){
System.out.println("deleted:" + i);
}
}
适用于:多个文档的表头都有id、name、deleted,但是所在列不同
Java:将Excel数据导入到数据库(一眼就看会)的更多相关文章
- java实现EXCEL数据导入到数据库中的格式问题的解决
之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
- 利用TOAD实现把EXCEL数据导入oracle数据库
利用TOAD实现把EXCEL数据导入oracle数据库 工具: Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...
- c#将Excel数据导入到数据库的实现代码
这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...
- NOPI Excel 数据导入到数据库
/// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...
- 把Excel数据导入到数据库
引入命名空间 using System.IO; using System.Data; using System.Data.OleDb; 引入命名空间 首先要把Excel上传到服务器 //上传Excel ...
- c#将Excel数据导入到数据库的实现代码(OleDb)
sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web ...
- c#将Excel数据导入到数据库的实现代码(转载)
假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码如下: using System; using System.Collections.Generic ...
- C# Excel数据导入到数据库
http://www.jb51.net/article/44743.htm 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 复制代码 代码如下: using System ...
随机推荐
- Unity中sharedMaterials 和 materials
sharedMaterials 和 materials: 这两个属性用法是一样的,但是从效率上来说最好用sharedMaterial,它是共享材质,无论如何操作材质的属性(如更换颜色或者更换shade ...
- 最多的划分来使数组有序 Max Chunks To Make Sorted
2018-12-01 11:05:46 一.Max Chunks To Make Sorted 问题描述: 问题求解: 由于没有重复,所以直观的来看对于每个遇到数,其能够被划分出来的前提是其前面已经有 ...
- Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据
前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...
- Python 编程快速上手 第七章总结
前言 在 Word 软件中,我们总是习惯使用 CMD+F 用来查找和替换文本,但是,正如作者所说: 虽然计算机可以很快地查找文本,但你必须精确地告诉它要找什么. 我们往往想要查找一类文本,比如一段文本 ...
- C#打印格式
一:C#代码直接打印pdf文件(打印质保书pdf文件) 引用: 代码注释很详细了. private void btn_pdf_Click(object sender, RoutedEventArgs ...
- LeetCode--429--N叉树的层序遍历
问题描述: 给定一个N叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 ...
- LeetCode--026--删除排序数组中的重复项
问题描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- tomcat启动问题,卡在 preparing launch delegate 100% 的解决方法
今天在打开eclipse中的tomcat时,每次用debug模式启动的时候总是会在preparing launch delegate到100%的时候卡主,起初以为是tomcat启动时间45s不够,于是 ...
- PHP如何定义类及其成员属性与操作
1.类的定义: 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ //成员属性 $name = ' ...
- chrome 自动加载flash
class Login(unittest.TestCase): #初始 def setUp(self): chromeOpitons = Options() prefs = { # "pro ...