新聞中心
隨著數(shù)據(jù)量的增加,關(guān)系型數(shù)據(jù)庫已經(jīng)成為了很多企業(yè)或個(gè)人存儲(chǔ)數(shù)據(jù)的首選,因?yàn)閿?shù)據(jù)基于關(guān)系型數(shù)據(jù)庫存儲(chǔ)的方式方便了數(shù)據(jù)檢索、過濾等操作。然而,很多數(shù)據(jù)源并不是基于數(shù)據(jù)庫存儲(chǔ),比如Excel表格,作為一種最基礎(chǔ)的數(shù)據(jù)處理工具,Excel表格承載了很多數(shù)據(jù),但Excel表格如何存儲(chǔ)到數(shù)據(jù)庫中,是許多開發(fā)者都遇到的問題。下面介紹的是通過的方法。

創(chuàng)新互聯(lián)公司專注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
一、準(zhǔn)備工作
1. Excel表格數(shù)據(jù)的預(yù)處理
我們需要先將Excel表格數(shù)據(jù)進(jìn)行預(yù)處理,也就是將Excel表格數(shù)據(jù)轉(zhuǎn)化為適合數(shù)據(jù)庫存儲(chǔ)的形式。對于Excel表格,我們可以使用Apache POI來讀取Excel表格。由于這里只是介紹如何將Excel表格存儲(chǔ)到數(shù)據(jù)庫中,因此,本文將不涉及Apache POI的使用。
2. 數(shù)據(jù)庫環(huán)境的配置
在開始存儲(chǔ)Excel表格數(shù)據(jù)之前,我們需要先進(jìn)行數(shù)據(jù)庫的環(huán)境配置。這里以MySQL數(shù)據(jù)庫為例,在MySQL軟件中新建一個(gè)數(shù)據(jù)庫,并創(chuàng)建一個(gè)名為“excel”的表格,用于存儲(chǔ)Excel表格中的數(shù)據(jù)。表格的設(shè)計(jì)如下:
CREATE TABLE `excel` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT ‘name’,
`age` int(11) DEFAULT NULL COMMENT ‘a(chǎn)ge’,
`address` varchar(255) DEFAULT NULL COMMENT ‘a(chǎn)ddress’,
`salary` double DEFAULT NULL COMMENT ‘salary’,
`birthday` datetime DEFAULT CURRENT_TIMESTAMP COMMENT ‘birthday’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
二、代碼實(shí)現(xiàn)
在Java代碼中,我們可以通過JDBC連接數(shù)據(jù)庫,將Excel表格中的數(shù)據(jù)存入到MySQL數(shù)據(jù)庫中。下面,我們來看一下Java代碼的實(shí)現(xiàn)過程:
1. 創(chuàng)建JDBC連接對象
通過以下代碼來創(chuàng)建一個(gè)JDBC連接對象:
Connection conn = null;
try {
// 加載驅(qū)動(dòng)程序
Class.forName(“com.mysql.jdbc.Driver”);
// 連接數(shù)據(jù)庫
conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”, “root”, “123456”);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
通過以上代碼,我們成功創(chuàng)建一個(gè)JDBC連接對象。
2. 執(zhí)行的SQL語句
在實(shí)現(xiàn)代碼過程中,我們需要將Excel表格中的數(shù)據(jù)讀取出來,然后將數(shù)據(jù)存入MySQL數(shù)據(jù)庫中。這里,我們需要構(gòu)造一個(gè)SQL語句,用于將數(shù)據(jù)存入MySQL表格中。如下所示:
INSERT INTO excel (name, age, address, salary, birthday) VALUES (?, ?, ?, ?, ?)
其中,?是占位符,用于接收Excel表格中的數(shù)據(jù)。
3. 處理Excel表格數(shù)據(jù)
通過以上兩步,我們成功建立了JDBC連接對象,并準(zhǔn)備好了SQL語句。接下來,我們需要將Excel表格中的數(shù)據(jù)讀取出來,并將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫中。這個(gè)過程中需要使用到Apache POI的相關(guān)API,我們來看一下代碼實(shí)現(xiàn):
InputStream in = new FileInputStream(new File(“data.xlsx”));//讀取Excel表格
Workbook wb = WorkbookFactory.create(in);//Excel工作簿
Sheet sheet = wb.getSheetAt(0);//獲取表格
Row row = null;//行
for (int i = 1; i
row = sheet.getRow(i);
String name = row.getCell(0).getStringCellValue();//獲取之一個(gè)單元格的值
int age = (int) row.getCell(1).getNumericCellValue();//獲取第二個(gè)單元格的值
String address = row.getCell(2).getStringCellValue();//獲取第三個(gè)單元格的值
double salary = row.getCell(3).getNumericCellValue();//獲取第四個(gè)單元格的值
Date birthday = row.getCell(4).getDateCellValue();//獲取第五個(gè)單元格的值
//插入數(shù)據(jù)到mysql表格中
String sql = “INSERT INTO excel (name, age, address, salary, birthday) VALUES (?, ?, ?, ?, ?)”;
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setString(3, address);
pstmt.setDouble(4, salary);
pstmt.setDate(5, new java.sql.Date(birthday.getTime()));
pstmt.executeUpdate();
}
以上代碼實(shí)現(xiàn)的功能是將Excel表格中的數(shù)據(jù)讀取出來,然后將數(shù)據(jù)存入到MySQL數(shù)據(jù)庫中,達(dá)到了Excel另存為數(shù)據(jù)庫存儲(chǔ)的目的。
三、
本文介紹了如何通過的方法,并且詳細(xì)介紹了Java代碼實(shí)現(xiàn)過程。相信讀者們在學(xué)習(xí)了此篇文章之后,就可以將Excel表格中的數(shù)據(jù)存入到MySQL數(shù)據(jù)庫中,為數(shù)據(jù)處理提供更多的選擇。
相關(guān)問題拓展閱讀:
- 怎么用java將一個(gè)excel里面數(shù)據(jù)讀出并寫入另一個(gè)excel?
- java 怎么把 excel文件導(dǎo)入到數(shù)據(jù)庫
怎么用java將一個(gè)excel里面數(shù)據(jù)讀出并寫入另一個(gè)excel?
需要對Excel中的數(shù)據(jù)進(jìn)行讀取操作。
java 怎么把 excel文件導(dǎo)入到數(shù)據(jù)庫
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.sql.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import jxl.*;
public class SimUpdate {
private String fileName;
public ZfzSimUpdate(String fileName){
this.fileName = fileName;
}
static Map tNames;
static{
tNames = new HashMap();
}
/**
* 用于產(chǎn)生 數(shù)據(jù)庫的 ID 值,組成 總共 17 位數(shù).
* 根據(jù)不同的表名,可保證同一秒內(nèi)產(chǎn)生的 ID 號(hào)不重復(fù)
*/
private static String getDtime() {
String rid;
Date nd = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMddHHmmss”);
rid = sdf.format(nd);
return rid;
}
public String getSeqNumber(String tableName) {
if(tableName == null || “”.equals(tableName))
tableName = “彎亮GENERY”;
Integer it;
// noinspection SynchronizeOnNonFinalField
synchronized(tNames){
it = (Integer)tNames.get(tableName);
if(it == null){
it = new Integer(100);
tNames.put(tableName, it);
}else{
if(it.intValue() > 998)
it = new Integer(100);
else
it = new Integer(1 + it.intValue());
tNames.put(tableName, it);
}
}
return getDtime() + String.valueOf(it);
}
private void updateDb(){
try{
Connection conn = DbPool.connectDB();
if(conn != null){
Statement stmt = conn.createStatement();
/**********************************************/
jxl.Workbook rwb = null;
try{
//構(gòu)建Workbook對象 只讀Workbook對象
//直接從本地文件創(chuàng)建Workbook
//從輸入流創(chuàng)建Workbook
InputStream is = new FileInputStream(fileName);
rwb = Workbook.getWorkbook(is);
//Sheet(術(shù)語首譽(yù):工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
//Sheet的下標(biāo)是從0開始的
//獲取之一張Sheet表
Sheet rs = rwb.getSheet(0);
//獲取Sheet表中所包含的總列數(shù)
int rsColumns = rs.getColumns();
//獲取Sheet表中所包含的總行數(shù)
int rsRows = rs.getRows();
//獲取指這下單元格的對象引用
String simNumber = “”,termSeqId = “”;
//指定SIM卡號(hào)及序列號(hào)
for(int i=0;i 0){
System.out.println(“成功插入第”+i+”條數(shù)據(jù)”);
}
}
//System.out.println(“SIM卡號(hào):”+simNumber+”,序列號(hào):”+termSeqId);
}
//以下代碼為寫入新的EXCEL,這里不使用,所以注釋
/*
//利用已經(jīng)創(chuàng)建的Excel工作薄創(chuàng)建新的可寫入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(“
//讀取之一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//獲取之一個(gè)單元格對象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//決斷單元格的類型,做出相應(yīng)的轉(zhuǎn)化
if (wc.getType() == CellType.LABEL) {
Label l = (Label) wc;
l.setString(“The value has been modified.”);
}
//寫入Excel對象
wwb.write();
wwb.close();
*/
}catch(Exception e){
e.printStackTrace();
}
finally{
//操作完成時(shí),關(guān)閉對象,翻譯占用的內(nèi)存空間
rwb.close();
}
/*********************************************/
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args){
DbPool dbPool = new DbPool(“dbConn.cfg”);//連接數(shù)據(jù)庫
SimUpdate simUpdate = new SimUpdate(“zfz_sim.xls”);
simUpdate.updateDb();
}
}
java 另存excel數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于java 另存excel數(shù)據(jù)庫,Java代碼實(shí)現(xiàn)Excel另存為數(shù)據(jù)庫存儲(chǔ),怎么用java將一個(gè)excel里面數(shù)據(jù)讀出并寫入另一個(gè)excel?,java 怎么把 excel文件導(dǎo)入到數(shù)據(jù)庫的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價(jià)格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
網(wǎng)頁名稱:Java代碼實(shí)現(xiàn)Excel另存為數(shù)據(jù)庫存儲(chǔ)(java另存excel數(shù)據(jù)庫)
文章網(wǎng)址:http://fisionsoft.com.cn/article/coecegg.html


咨詢
建站咨詢
