如何将Excle表里的数据导入到数据库表里??? 各位大大们好,我是个新手。最近在做个课程设计,是住房公积金管理系统,采用的是Struts1.2,Hibernate。现需要做个功能:将Excle表里的数据导入到数据库表里。可以的话,发个简单的例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去apache下个poi的jar, 然后先从excel里面读取数据, 然后再写入数据库中。 在网上找个jxl.jar的实例看下就知道了 很简单的 InputStream is = file.getInputStream(); // excel 文件流Workbook workbook = Workbook.getWorkbook(is);Sheet sheet = workbook.getSheet(0); // excel 第一页int rowCount = sheet.getRows(); // 行数int columnCount = sheet.getColumns(); // 列数for (int i = 1; i < rowCount; i++) { AuditList audit = new AuditList(); audit.setImpRecordId(impRecordId); for (int j = 0; j < columnCount; j++) { Cell cell = sheet.getCell(j, i); // 单元格 String content = cell.getContents(); // 数据 // 有 n 列写 n+1 个分支 switch (j) { case 0: JavaBean.setProperty_1(content); break; case 1: JavaBean.setProperty_2(content); break; case 2: JavaBean.setProperty_3(content); break; case 3: JavaBean.setProperty_4(content); break; default: break; } }}is.close(); import jxl.Cell;import jxl.Sheet;import jxl.Workbook; 上边的代码是我拷的项目里的。还想着给你写个例子呢。倒结贴了。excel 样式: 姓名 年龄 出生日期 薪水 张三 30 1979-1-1 10000 李四 24 1985-5-5 5000 王五 33 1976-6-6 50000 任六 20 1989-6-8 4000Record:public class Record { private String name; private int age; private java.util.Date birthday; private Double salary; public Record() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public java.util.Date getBirthday() { return birthday; } public void setBirthday(java.util.Date birthday) { this.birthday = birthday; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; }}ImportExcel:import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;public class ImportExcel { public static void main(String[] args) throws Exception { File excelFile = new File("yourExcel.xls"); InputStream is = new FileInputStream(excelFile); // excel 文件流 Workbook workbook = Workbook.getWorkbook(is); Sheet sheet = workbook.getSheet(0); // excel 第一页 Record[] recordArray = toRecordArray(sheet); is.close(); import2DB(recordArray); } /** * 将每行记录封装成 Record bean 放入数组中 * * @param sheet * 文档的一页 * @return 所有记录组成的数组 */ public static Record[] toRecordArray(Sheet sheet) { int rowCount = sheet.getRows(); // 行数 int columnCount = sheet.getColumns(); // 列数 Record[] recordArray = new Record[rowCount]; for (int i = 1; i < rowCount; i++) { Record record = new Record(); for (int j = 0; j < columnCount; j++) { Cell cell = sheet.getCell(j, i); // 单元格 String content = cell.getContents(); // 数据 switch (j) { case 0: record.setName(content); break; case 1: record.setAge(Integer.valueOf(content)); break; case 2: record.setBirthday(string2Date(content)); break; case 3: record.setSalary(Double.valueOf(content)); break; default: break; } } recordArray[i - 1] = record; } return recordArray; } /** * String 转换成 java.util.Date * * @param dateString * 字符串类型的日期 * @return 日期 */ public static Date string2Date(String dateString) { Date returnValue = null; String dateFormat = "yyyy-MM-dd"; SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); try { returnValue = sdf.parse(dateString); } catch (ParseException e) { e.printStackTrace(); } return returnValue; } /** * S插入到数据库 * * @param recordArray * excel 所有记录组成的数组 * @return void */ public static void import2DB(Record[] recordArray) { // TODO 使用批量插入方法优化,AOP 控制事务 }} EJB3.0 如何在客户端显示JasperViewer? hibernate.hbm2ddl.auto设置成none仍然自动更改表结构 谁有java webservice的书籍? hibernate锁问题?急! ftp软件的工作原理? tomcat 地址映射问题 如何在本机上测试服务器端的DAO 求助各位大哥大姐,axis配置问题,我着急啊! 看了些j2ee的文档,搞得一头污水,请高手指点,随便放分! 高分紧急求助,客户端访问Web Service问题!!! Struts1.2的validator框架的自定义校验规则
InputStream is = file.getInputStream(); // excel 文件流
Workbook workbook = Workbook.getWorkbook(is);
Sheet sheet = workbook.getSheet(0); // excel 第一页int rowCount = sheet.getRows(); // 行数
int columnCount = sheet.getColumns(); // 列数for (int i = 1; i < rowCount; i++) {
AuditList audit = new AuditList();
audit.setImpRecordId(impRecordId); for (int j = 0; j < columnCount; j++) {
Cell cell = sheet.getCell(j, i); // 单元格
String content = cell.getContents(); // 数据 // 有 n 列写 n+1 个分支
switch (j) {
case 0:
JavaBean.setProperty_1(content);
break;
case 1:
JavaBean.setProperty_2(content);
break;
case 2:
JavaBean.setProperty_3(content);
break;
case 3:
JavaBean.setProperty_4(content);
break;
default:
break;
}
}
}
is.close();
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
还想着给你写个例子呢。倒结贴了。excel 样式:
姓名 年龄 出生日期 薪水
张三 30 1979-1-1 10000
李四 24 1985-5-5 5000
王五 33 1976-6-6 50000
任六 20 1989-6-8 4000Record:public class Record { private String name;
private int age;
private java.util.Date birthday;
private Double salary; public Record() {
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public java.util.Date getBirthday() {
return birthday;
} public void setBirthday(java.util.Date birthday) {
this.birthday = birthday;
} public Double getSalary() {
return salary;
} public void setSalary(Double salary) {
this.salary = salary;
}}
ImportExcel:import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;public class ImportExcel { public static void main(String[] args) throws Exception {
File excelFile = new File("yourExcel.xls");
InputStream is = new FileInputStream(excelFile); // excel 文件流
Workbook workbook = Workbook.getWorkbook(is);
Sheet sheet = workbook.getSheet(0); // excel 第一页 Record[] recordArray = toRecordArray(sheet); is.close(); import2DB(recordArray);
} /**
* 将每行记录封装成 Record bean 放入数组中
*
* @param sheet
* 文档的一页
* @return 所有记录组成的数组
*/
public static Record[] toRecordArray(Sheet sheet) {
int rowCount = sheet.getRows(); // 行数
int columnCount = sheet.getColumns(); // 列数 Record[] recordArray = new Record[rowCount]; for (int i = 1; i < rowCount; i++) {
Record record = new Record(); for (int j = 0; j < columnCount; j++) {
Cell cell = sheet.getCell(j, i); // 单元格
String content = cell.getContents(); // 数据 switch (j) {
case 0:
record.setName(content);
break;
case 1:
record.setAge(Integer.valueOf(content));
break;
case 2:
record.setBirthday(string2Date(content));
break;
case 3:
record.setSalary(Double.valueOf(content));
break;
default:
break;
}
}
recordArray[i - 1] = record;
}
return recordArray;
} /**
* String 转换成 java.util.Date
*
* @param dateString
* 字符串类型的日期
* @return 日期
*/
public static Date string2Date(String dateString) {
Date returnValue = null;
String dateFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); try {
returnValue = sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
} return returnValue;
} /**
* S插入到数据库
*
* @param recordArray
* excel 所有记录组成的数组
* @return void
*/
public static void import2DB(Record[] recordArray) {
// TODO 使用批量插入方法优化,AOP 控制事务
}
}