中易网

java 跪求 用jxl 将EXcel中数据 导入 MYSQL的源码~

答案:1  悬赏:80  
解决时间 2021-01-30 15:00
RT
最佳答案
看下吧..

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import Bean.DBClass;
import Bean.DBContr;

public class Test {

static String UserName = "newExcel"; // 生成的数据库名字

private static Connection conn = null;

private static String drive = "com.mysql.jdbc.Driver";

private static String DBurl ="jdbc:mysql://localhost:3306/muren";

private static String name = "sa"; //数据库账号

private static String pwd = "sa"; //数据库,密码

private static Statement st=null;

public static void main(String[] args) {
readExcel("D:/newExcel.xls");
UserName = "UserName";
}

public static void readExcel(String url) {
File filename = new File(url);
Workbook wb = null;
String create = "create table " + UserName + "(";
String sql = "insert into " + UserName + "(";
String parameter = "";
String value = "";
String insert = "";
try {
wb = Workbook.getWorkbook(filename);
Sheet s = wb.getSheet(0);// 第1个sheet
Cell c = null;
int row = s.getRows();// 总行数
int col = s.getColumns();// 总列数
for (int i = 0; i < col; i++) {
if (i == col-1) {
create += s.getCell(i, 0).getContents() + " varchar(255)";
parameter += s.getCell(i, 0).getContents();
} else {
create += s.getCell(i, 0).getContents() + " varchar(255),";
parameter += s.getCell(i, 0).getContents() + ",";
}
}
create += ")";
System.out.println("数据库生成表语句---" + create);
try {
Create(create);
} catch (Exception e) {
int a = JOptionPane.showConfirmDialog(null, "数据库已经存在的表,确定删除吗?",
"温馨提示", JOptionPane.YES_NO_OPTION);
if (a == 0) {
try {
Create("drop table " + UserName + "");
Create(create);
} catch (Exception e1) {
return;
}
} else {
int aa = JOptionPane.showConfirmDialog(null, "是否继续添加到原来表单裏面",
"温馨提示", JOptionPane.YES_NO_OPTION);
if (aa == 1) {
return;
} }
}
System.out.println("--------------------------------------");
for (int i = 1; i < row; i++) {
value="";
for (int j = 0; j < col; j++) {
c = s.getCell(j, i);
if (j < col - 1) {
value += "'" + c.getContents() + "',";
} else {
value += "'" + c.getContents() + "'";
}
}
insert = sql + parameter + ") values(" + value + ")";
System.out.println("添加语句-------" + insert);
int a = insert(insert);
if (a > 0) {
System.out.println("成功添加" + i + "次");
} else {
System.out.println("第" + i + "次失败了");
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
}
}

public static Connection getConn() {
try {
Class.forName(drive);
conn = DriverManager.getConnection(DBurl, name, pwd);
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "数据库连接错误");
}
return conn;
}

public static void Close() {
if (conn != null)
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public static int insert(String sql){
int result=0;
try {
st=getConn().createStatement();
result=st.executeUpdate(sql);
} catch (Exception e) {
System.out.println("添加失败");
}finally{
Close();
}
return result;
}

public static int Create(String sql) throws Exception{
int result=0;
try {
st=getConn().createStatement();
result=st.executeUpdate(sql);
}finally{
Close();
}
return result;
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我这台老电脑的配置可以加固态硬盘吗
QQ炫舞怎样以管理员身份运行
我要一个念起来朗朗上口,清新脱俗的女生英文
昌黎县秦皇岛昌黎县妇幼保健院健康大坝工程联
质量为8.02g的铁片
我的户口本上的姓名和中考准考证上的姓名不一
男人监狱怎么解决生理需要
x÷12.5一12=8解方程1
板栗尾部中间有突芽,是板栗发芽吗?
在阳光下暴晒,擦防晒霜有用不?
JS注册过商标吗?还有哪些分类可以注册?
中分需要拉直吗
容亿资信业务员怎么样
海上钢琴师的服饰是哪个时代的 希望好心人能
什么动漫男主是变态
推荐资讯
法语里表示国名的词都是阳性吗?
我是一名五年级下册的学生。我想问一下:快要
为什么我的iPhone5的ios7的系统回到主屏幕或
手游拳皇97。 年糕在哪兑换
逆战一直进入修复模式,修复好了以后还是会进
我的是联想笔记本电脑,XP系统,腾讯视频软件
十二岁小女孩可以用什么牌子的洗面奶
裸色是什么颜色?裸色的搭配技巧
当年的三毛 哪吒 金刚葫芦娃 为什么都是小孩
刚认识一个月的女朋友,应该送什么花
My father gave me a present on my birthday
考驾照学车都不用踩油门的?还有科目二考试时
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?