一個讀取Excel中在值,然後將Excel的值插入到MySql庫中。
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class CopyOfReadData {
@SuppressWarnings("unchecked")
public void createData(String path,String sheetname){
try {
String sourcefile = path;
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
String preheader = "";
List<String> fieldsList = new ArrayList<String>();
List dataList = new ArrayList();
for(int i = 0;i<cr;i++){
Cell[] testcell = sheet.getRow(i);
if(testcell.length == 0) continue;
if(!header.equals(preheader)){
fieldsList.clear();
preheader = header;
}
String tempString = testcell[0].getContents();
int datatype = tempString.indexOf("&&");
if(datatype != -1 ) continue;
System.out.println("第"+i+"行------");
//get cells of row
for (int j = 0; j < testcell.length; j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
// int coment = str1.indexOf("$$");
//int datatype = str1.indexOf("&&");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
}else{
dataList.add(str1);
}
}
}
if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
deleteData(header,dataList);
System.out.println("成功刪除");
inserData(header,fieldsList,dataList);
System.out.println("成功插入");
dataList.clear();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void deleteDataByid(String path,String sheetname){
try {
String sourcefile = path;
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
String preheader = "";
List<String> fieldsList = new ArrayList<String>();
List dataList = new ArrayList();
for(int i = 0;i<cr;i++){
Cell[] testcell = sheet.getRow(i);
if(testcell.length == 0) continue;
if(!header.equals(preheader)){
fieldsList.clear();
preheader = header;
}
String tempString = testcell[0].getContents();
int datatype = tempString.indexOf("&&");
if(datatype != -1 ) continue;
System.out.println("第"+i+"行------");
//get cells of row
for (int j = 0; j < testcell.length; j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
// int coment = str1.indexOf("$$");
//int datatype = str1.indexOf("&&");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
}else{
dataList.add(str1);
}
}
}
if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
deleteData(header,dataList);
System.out.println("成功刪除");
// inserData(header,fieldsList,dataList);
// System.out.println("成功插入");
dataList.clear();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void deleteData(String header,List dataList){
try {
String sql = "delete from "+header + " where 1=1 and id = "+dataList.get(0);
excute(sql);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public int inserData(String header,List<String> fieldsList,List<String> dataList){
StringBuffer sql = new StringBuffer("insert into ");
sql.append(header+" (");
for(int i = 0; i<fieldsList.size();i++){
sql.append(fieldsList.get(i)+",");
}
sql.delete(sql.length()-1, sql.length());
sql.append(") values(");
for(int i = 0; i<dataList.size();i++){
sql.append("'"+dataList.get(i)+"',");
}
sql.delete(sql.length()-1, sql.length());
sql.append(")");
excute(sql.toString());
return 0;
}
private void excute(String sql){
//載入Oracle驅動程序
try {
//Class.forName("oracle.jdbc.OracleDriver").newInstance();
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ex) {
ex.printStackTrace();
System.out.println("載入MySQL數據庫驅動時出錯");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
System.out.println("載入MySQL數據庫驅動時出錯");
} catch (IllegalAccessException ex) {
ex.printStackTrace();
System.out.println("載入MySQL數據庫驅動時出錯");
}
/////////////////////////////////////////////////////////////////////////
//連接到Oracle數據庫
java.sql.Connection conn = null;
try{
//連接Oracle數據庫
// conn = java.sql.DriverManager.getConnection(
// "jdbc:oracle:thin:@192.168.1.2:1521:dbname", "username", "password");
//連接Mysql庫
conn = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/cookbook", "root", "");} catch (Exception ex){
ex.printStackTrace();
System.out.println("連接到MySQL數據庫時出錯!");
System.exit(0);
}
////////////////////////////////////////////////////////////////////////
//得到MySQL操作流
try {
System.out.println("----------------- "+sql);
java.sql.PreparedStatement stat = conn.prepareStatement(sql);
boolean rs = stat.execute();
} catch(Exception ex) {
ex.printStackTrace();
System.exit(0);
}
//關半程序所佔用的資源
try{
conn.close();
}catch(Exception ex){
ex.printStackTrace();
System.out.println("關閉程序所佔用的資源時出錯");
System.exit(0);
}
}
public List<String> getData(String path,String sheetname){
List<String> dataList = new ArrayList();
try {
String sourcefile = path;
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
List<String> fieldsList = new ArrayList<String>();
for(int i = 0;i<cr;i++){
Cell[] testcell = sheet.getRow(i);
//get cells of row
for (int j = 0; j < testcell.length; j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
}else{
dataList.add(str1);
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return dataList;
}
public void deleteData(String path,String sheetname){
try {
String sourcefile = path;
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
for(int i = 0;i<cr;i++){
String header = "";
Cell[] testcell = sheet.getRow(i);
//get cells of row
for (int j = 0; j < testcell.length; j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int cheader = str1.indexOf("**");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
String sql = "delete from "+header;
excute(sql);
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
2、測試類
public class CopyOfDataIndert {
/**
* @param args
*/
public static void main(String[] args) {
CopyOfReadData readData = new CopyOfReadData();
//造數據----------------------------------------------------------
String path = "E:/09.testdata/xxx.xls";
readData.createData(path, "yxl");
//刪除數據
// readData.deleteDataByid(path, "md_data");
// readData.deleteData(path, "delete_data");
}
}