java如何把excel内容导入到mysql数据库,数据库的列名就是excel的列名
java如何把excel内容导入到mysql数据库,数据库的列名就是excel的列名~能否给个例子~谢谢...
java如何把excel内容导入到mysql数据库,数据库的列名就是excel的列名~能否给个例子~谢谢
展开
5个回答
展开全部
1、添加POI jar包到项目的lib目录下-
2、Excel文件目录:d://excel.xls-
3、数据库字段为:num1 num2 num3 num4 num5 num6-
4、数据库名:blog-
5、表名:test-
6、编写类:连接mysql的字符串方法、插入的方法、实体类--
import java.io.FileInputStream;-
import java.io.FileNotFoundException;-
import java.io.IOException;-
import org.apache.commons.logging.Log;-
import org.apache.commons.logging.LogFactory;-
import org.apache.poi.hssf.usermodel.HSSFCell;-
import org.apache.poi.hssf.usermodel.HSSFRow;-
import org.apache.poi.hssf.usermodel.HSSFSheet;-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;-
public class TestExcel {-
//记录类的输出信息-
static Log log = LogFactory.getLog(TestExcel.class); -
//获取Excel文档的路径-
public static String filePath = "D://excel.xls";-
public static void main(String[] args) {-
try {-
// 创建对Excel工作簿文件的引用-
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));-
// 在Excel文档中,第一张工作表的缺省索引是0,-
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);-
HSSFSheet sheet = wookbook.getSheet("Sheet1");-
//获取到Excel文件中的所有行数-
int rows = sheet.getPhysicalNumberOfRows();-
//遍历行-
for (int i = 0; i < rows; i++) {-
// 读取左上端单元格-
HSSFRow row = sheet.getRow(i);-
// 行不为空-
if (row != null) {-
//获取到Excel文件中的所有的列-
int cells = row.getPhysicalNumberOfCells();-
String value = ""; -
//遍历列-
for (int j = 0; j < cells; j++) {-
//获取到列的值-
HSSFCell cell = row.getCell(j);-
if (cell != null) {-
switch (cell.getCellType()) {-
case HSSFCell.CELL_TYPE_FORMULA:-
break;-
case HSSFCell.CELL_TYPE_NUMERIC:-
value += cell.getNumericCellValue() + ","; -
break; -
case HSSFCell.CELL_TYPE_STRING:-
value += cell.getStringCellValue() + ",";-
break;-
default:-
value += "0";-
break;-
}-
} -
}-
// 将数据插入到mysql数据库中-
String[] val = value.split(",");-
TestEntity entity = new TestEntity();-
entity.setNum1(val[0]);-
entity.setNum2(val[1]);-
entity.setNum3(val[2]);-
entity.setNum4(val[3]);-
entity.setNum5(val[4]);-
entity.setNum6(val[5]);-
TestMethod method = new TestMethod();-
method.Add(entity);-
}-
}-
} catch (FileNotFoundException e) {-
e.printStackTrace();-
} catch (IOException e) {-
e.printStackTrace();-
}-
}-
}-
2、Excel文件目录:d://excel.xls-
3、数据库字段为:num1 num2 num3 num4 num5 num6-
4、数据库名:blog-
5、表名:test-
6、编写类:连接mysql的字符串方法、插入的方法、实体类--
import java.io.FileInputStream;-
import java.io.FileNotFoundException;-
import java.io.IOException;-
import org.apache.commons.logging.Log;-
import org.apache.commons.logging.LogFactory;-
import org.apache.poi.hssf.usermodel.HSSFCell;-
import org.apache.poi.hssf.usermodel.HSSFRow;-
import org.apache.poi.hssf.usermodel.HSSFSheet;-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;-
public class TestExcel {-
//记录类的输出信息-
static Log log = LogFactory.getLog(TestExcel.class); -
//获取Excel文档的路径-
public static String filePath = "D://excel.xls";-
public static void main(String[] args) {-
try {-
// 创建对Excel工作簿文件的引用-
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));-
// 在Excel文档中,第一张工作表的缺省索引是0,-
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);-
HSSFSheet sheet = wookbook.getSheet("Sheet1");-
//获取到Excel文件中的所有行数-
int rows = sheet.getPhysicalNumberOfRows();-
//遍历行-
for (int i = 0; i < rows; i++) {-
// 读取左上端单元格-
HSSFRow row = sheet.getRow(i);-
// 行不为空-
if (row != null) {-
//获取到Excel文件中的所有的列-
int cells = row.getPhysicalNumberOfCells();-
String value = ""; -
//遍历列-
for (int j = 0; j < cells; j++) {-
//获取到列的值-
HSSFCell cell = row.getCell(j);-
if (cell != null) {-
switch (cell.getCellType()) {-
case HSSFCell.CELL_TYPE_FORMULA:-
break;-
case HSSFCell.CELL_TYPE_NUMERIC:-
value += cell.getNumericCellValue() + ","; -
break; -
case HSSFCell.CELL_TYPE_STRING:-
value += cell.getStringCellValue() + ",";-
break;-
default:-
value += "0";-
break;-
}-
} -
}-
// 将数据插入到mysql数据库中-
String[] val = value.split(",");-
TestEntity entity = new TestEntity();-
entity.setNum1(val[0]);-
entity.setNum2(val[1]);-
entity.setNum3(val[2]);-
entity.setNum4(val[3]);-
entity.setNum5(val[4]);-
entity.setNum6(val[5]);-
TestMethod method = new TestMethod();-
method.Add(entity);-
}-
}-
} catch (FileNotFoundException e) {-
e.printStackTrace();-
} catch (IOException e) {-
e.printStackTrace();-
}-
}-
}-
参考资料: http://www.cnblogs.com/xucan/archive/2009/08/09/1542238.html
展开全部
方法很多,不过建议你先看看mysql的开发文档,里面写的很详细的,如果你懒得看,可以看下面的
1.有个软件PHP Excel Parser Pro v4.2可以,你可以在这里下载:
2.可将Excel存成csv格式。然后通过phpmyadmin倒入mysql
3.先导入Access中,再弄到MySQL中,或者自己写程序读出excel中数据然后存入mysql中
4.还有一个比较笨的手工方法,就是先利用excel生成sql语句,然后再到mysql中运行,这种方法适用于excel表格导入到各类sql数据库:
一、假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3
二、在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
1、增加一列(假设是D列)
2、在第一行的D列,就是D1中输入公式:
=CONCATENATE("insert into table (col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")
3、此时D1已经生成了如下的sql语句:
insert into table (col1,col2,col3) values ('a','11','33');
4、将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)
5、此时D列已经生成了所有的sql语句
6、把D列复制到一个纯文本文件中,假设为sql.txt
三、把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。
1.有个软件PHP Excel Parser Pro v4.2可以,你可以在这里下载:
2.可将Excel存成csv格式。然后通过phpmyadmin倒入mysql
3.先导入Access中,再弄到MySQL中,或者自己写程序读出excel中数据然后存入mysql中
4.还有一个比较笨的手工方法,就是先利用excel生成sql语句,然后再到mysql中运行,这种方法适用于excel表格导入到各类sql数据库:
一、假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3
二、在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
1、增加一列(假设是D列)
2、在第一行的D列,就是D1中输入公式:
=CONCATENATE("insert into table (col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")
3、此时D1已经生成了如下的sql语句:
insert into table (col1,col2,col3) values ('a','11','33');
4、将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)
5、此时D列已经生成了所有的sql语句
6、把D列复制到一个纯文本文件中,假设为sql.txt
三、把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有什么例子,说说思路吧。
先解析出excel内容。用对象数组存储。
例如:数据库表为:person; 对应的对象映射为 Person.java
//准备数组接收excel解析出的数据
List persons < Person > = null;
//创建连接数据库,并插入数据的操作类以及相应方法 DataOper.java
//连接数据库
//插入数据方法
public static boolean insert(Person person); //参数为数据库映射对象
//创建解析excel操作类 ExcelCon.java
ExcelConec = new ExcelCon();
//解析excel返回值 具体取值代码自己实现吧
persons = ec.getList();
//实现批量插入。在不使用批处理的情况下
for( int i = 0 ; i < persons.size(); i++){
Person person = (Person)persons.get(i);
DataOper.insert(person);
}
//大体如此 楼上正好把取excel数据的方法写了!!
先解析出excel内容。用对象数组存储。
例如:数据库表为:person; 对应的对象映射为 Person.java
//准备数组接收excel解析出的数据
List persons < Person > = null;
//创建连接数据库,并插入数据的操作类以及相应方法 DataOper.java
//连接数据库
//插入数据方法
public static boolean insert(Person person); //参数为数据库映射对象
//创建解析excel操作类 ExcelCon.java
ExcelConec = new ExcelCon();
//解析excel返回值 具体取值代码自己实现吧
persons = ec.getList();
//实现批量插入。在不使用批处理的情况下
for( int i = 0 ; i < persons.size(); i++){
Person person = (Person)persons.get(i);
DataOper.insert(person);
}
//大体如此 楼上正好把取excel数据的方法写了!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
微软提供了将EXCEL作为数据源的驱动
控制面板--管理工具--数据源 在系统DSN标签下点选添加 选择Driver Do MicroSoft Excel
点击完成 数据源名任意 选择EXCEL版本然后点选选择工作簿 选中你要导入的EXCEL文件
要通过java程序获取内容的话
Connection c = null;
Statement stmnt = null;
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
c = DriverManager.getConnection( "jdbc:odbc:数据源名", "", "" );
stmnt = c.createStatement();
String query = "SELECT * FROM [Sheet1$] ";
ResultSet rs = stmnt.executeQuery( query );
要注意的是SQL语句中表名的写法 后面要加$
控制面板--管理工具--数据源 在系统DSN标签下点选添加 选择Driver Do MicroSoft Excel
点击完成 数据源名任意 选择EXCEL版本然后点选选择工作簿 选中你要导入的EXCEL文件
要通过java程序获取内容的话
Connection c = null;
Statement stmnt = null;
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
c = DriverManager.getConnection( "jdbc:odbc:数据源名", "", "" );
stmnt = c.createStatement();
String query = "SELECT * FROM [Sheet1$] ";
ResultSet rs = stmnt.executeQuery( query );
要注意的是SQL语句中表名的写法 后面要加$
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用的是一个叫CVS的导入小工具
不仅mysql 能用 ORACLE 、SQLServer 都能用
你可以去百度
也可以给我发邮件jxd_email@sina.com
不仅mysql 能用 ORACLE 、SQLServer 都能用
你可以去百度
也可以给我发邮件jxd_email@sina.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询