新聞中心
在現(xiàn)代社會(huì)中,數(shù)據(jù)的信息化和智能化處理早已成為企業(yè)發(fā)展的重要方向。而數(shù)據(jù)處理的基礎(chǔ)和核心就是數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的管理關(guān)系到企業(yè)的發(fā)展和效率,因此,數(shù)據(jù)的導(dǎo)入和處理成為企業(yè)日常工作的必備活動(dòng)。

專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)酒泉免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
然而,數(shù)據(jù)的導(dǎo)入和處理也面臨一些問題。比如,現(xiàn)實(shí)中數(shù)據(jù)的來源往往是Excel這種表格軟件,但是,將這些數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中卻不是一件簡(jiǎn)單的事情。如果用手工拷貝的方式進(jìn)行導(dǎo)入,那么工作量將會(huì)十分龐大,而且容易出現(xiàn)錯(cuò)誤。此時(shí),我們就需要一種輕松的方法來實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入。
Java作為面向?qū)ο蟮母呒?jí)編程語言,廣泛應(yīng)用于軟件開發(fā)、手機(jī)應(yīng)用、企業(yè)級(jí)應(yīng)用、嵌入式系統(tǒng)和云計(jì)算等領(lǐng)域。在數(shù)據(jù)處理和導(dǎo)入中,Java的應(yīng)用也很廣泛。下面我們將分析如何使用Java輕松實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)。
準(zhǔn)備工作
在使用Java進(jìn)行Excel數(shù)據(jù)導(dǎo)入時(shí),我們需要以下開發(fā)環(huán)境和工具:
– JDK:需要安裝Java開發(fā)工具包(JDK)。
– Eclipse或Intellij IDEA:作為開發(fā)工具,需要安裝一個(gè)集成開發(fā)環(huán)境(IDE)。
– MySQL:可用于存儲(chǔ)導(dǎo)入的數(shù)據(jù),需要配置MySQL數(shù)據(jù)庫(kù)環(huán)境并在本地或云端創(chuàng)建一個(gè)或多個(gè)數(shù)據(jù)庫(kù)。
– Excel算法庫(kù):需要導(dǎo)入Java操作Excel的算法庫(kù)Apache POI。
Java代碼實(shí)現(xiàn)
在準(zhǔn)備工作完成后,我們就可以使用Java代碼來實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)了。在下面的例子中,我們將使用Java將員工信息從Excel表格中導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中。
首先是創(chuàng)建Excel文件中的員工信息表格。員工信息表格至少必須包括以下內(nèi)容:
– 員工編號(hào):ID
– 員工姓名:NAME
– 性別:SEX
– 年齡:AGE
– 郵箱:EML
– 手機(jī)號(hào)碼:PHONE
– 地址:ADDRESS
現(xiàn)在讓我們來看一下Java代碼是如何實(shí)現(xiàn)的。
導(dǎo)入Excel數(shù)據(jù)的方法如下所示:
public class ExcelImport {
public static boolean importExcel(File file, int excelIndex, boolean isFirstRowAsHeader) {
boolean result;
try {
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet = workbook.getSheetAt(excelIndex);
if (isFirstRowAsHeader) {
Row header = sheet.getRow(0);
if (header != null) {
// 獲取表頭數(shù)據(jù)
String idName = header.getCell(0).getStringCellValue();
String nameName = header.getCell(1).getStringCellValue();
String sexName = header.getCell(2).getStringCellValue();
String ageName = header.getCell(3).getStringCellValue();
String emlName = header.getCell(4).getStringCellValue();
String phoneName = header.getCell(5).getStringCellValue();
String addressName = header.getCell(6).getStringCellValue();
…
} else {
System.err.println(“表頭為空!”);
}
}
// 遍歷表格內(nèi)容
Iterator rowIterator = sheet.rowIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if (row.getRowNum() == 0 && isFirstRowAsHeader) {
continue;
}
// 讀取每個(gè)單元格的數(shù)據(jù)
int id = (int) row.getCell(0).getNumericCellValue();
String name = row.getCell(1).getStringCellValue();
String sex = row.getCell(2).getStringCellValue();
int age = (int) row.getCell(3).getNumericCellValue();
String eml = row.getCell(4).getStringCellValue();
String phone = row.getCell(5).getStringCellValue();
String address = row.getCell(6).getStringCellValue();
// 將讀取到的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中
result = executeUpdate(“INSERT INTO employees (id, name, sex, age, eml, phone, address)”
+ ” VALUES (“+id+”, ‘”+name+”‘, ‘”+sex+”‘, “+age+”, ‘”+eml+”‘, ‘”+phone+”‘, ‘”+address+”‘)”);
…
}
workbook.close();
} catch (Exception e) {
e.printStackTrace();
result = false;
}
return result;
}
}
然后是將員工信息存儲(chǔ)到數(shù)據(jù)庫(kù)的方法:
public static boolean executeUpdate(String sql){
boolean result;
try{
Class.forName(“com.mysql.jdbc.Driver”);
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/database?serverTimezone=UTC&characterEncoding=utf8&useSSL=false”, “root”, “123456”);
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
statement.close();
connection.close();
result = true;
} catch (Exception e) {
e.printStackTrace();
result = false;
}
return result;
}
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220java如何把excel內(nèi)容導(dǎo)入到mysql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的列名就是excel的列名
微軟提供了將EXCEL作為數(shù)據(jù)源的驅(qū)動(dòng)
控制面板–管理工具–數(shù)據(jù)源 在系統(tǒng)DSN標(biāo)簽下點(diǎn)選添沖螞加 選擇Driver Do MicroSoft Excel
點(diǎn)擊完成 數(shù)據(jù)源名任意 選擇EXCEL版本然后點(diǎn)選陵判正選擇工作尺悔簿 選中你要導(dǎo)入的EXCEL文件
要通過java程序獲取內(nèi)容的話
Connection c = null;
Statement stmnt = null;
try {
Class.forName( “sun.jdbc.odbc.JdbcOdbcDriver” );
c = DriverManager.getConnection( “jdbc:odbc:數(shù)據(jù)源名”, “”, “” );
stmnt = c.createStatement();
String query = “SELECT * FROM “;
ResultSet rs = stmnt.executeQuery( query );
要注意的是SQL語句中表名的寫法 后面要加$
1、添加POI jar包到項(xiàng)目的lib目錄下-
2、Excel文件目錄:
3、數(shù)據(jù)庫(kù)字租春段為:num1 num2 num3 num4 num5 num6-
4、數(shù)據(jù)庫(kù)名:blog-
5、表名:test-
6、編寫類:連接mysql的字符旦型明串方法、插入的方法、實(shí)體類–
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 = “
public static void main(String args) {-
try {-
// 創(chuàng)建對(duì)Excel工作簿文件的引用-
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));-
// 在Excel文檔中,之一張工作表的缺省索引是0,-
// 其語句為:HSSFSheet sheet = workbook.getSheetAt(0);-
HSSFSheet sheet = wookbook.getSheet(“Sheet1”);-
//獲取到Excel文件中的所有行數(shù)-
int rows = sheet.getPhysicalNumberOfRows();-
//遍歷行-
for (int i = 0; i = null;
//創(chuàng)建連接數(shù)據(jù)庫(kù),并插入數(shù)據(jù)的操作類以及相應(yīng)方法 DataOper.java
//連接數(shù)據(jù)庫(kù)
//插入數(shù)據(jù)方法
public static boolean insert(Person person); //參數(shù)為數(shù)據(jù)庫(kù)映射對(duì)象
//創(chuàng)建解析excel操作類 ExcelCon.java
ExcelConec = new ExcelCon();
//解析excel返回值 具體取值代碼自攜粗己實(shí)現(xiàn)吧
persons = ec.getList();
//灶乎實(shí)現(xiàn)批量插入。在不使用批處理的情況下
for( int i = 0 ; i
Person person = (Person)persons.get(i);
DataOper.insert(person);
}
//大體如此 樓上正好把取excel數(shù)據(jù)的方法寫了??!
我用的是一個(gè)耐悉叫CVS的導(dǎo)入小工具
不僅mysql 能用 ORACLE 、SQLServer 都能慎瞎用
你可以去百度
怎樣將Excel文件導(dǎo)入數(shù)據(jù)庫(kù)(在P環(huán)境下Java代碼)
呵呵,樓主既然思路都有了還怕寫不出代碼么?
你這個(gè)思路沒有問題的!
可以把這個(gè)問題拆分成幾個(gè)小問題,就簡(jiǎn)單多了。
之一是文件上傳,可以參照J(rèn)akarta的FileUpload組件,其實(shí)也不一定要用這個(gè),用普通的Post也就行了。
第二是Excel解析,用L或者POI都攔搏茄行
第三銀或是數(shù)據(jù)保存,這個(gè)應(yīng)該簡(jiǎn)單吧,一個(gè)循環(huán),一行對(duì)應(yīng)一條數(shù)據(jù),寫好了方法循環(huán)賦值調(diào)用就行簡(jiǎn)察了。
第四是查詢和顯示,這個(gè)更簡(jiǎn)單了,不用多說。
文件上傳和Excel解析的例子網(wǎng)上很多的,改改就變自己的了,何必在這管別人要代碼呢~
我只給你說下第二步怎么樣吧,其他的你自己應(yīng)該可以解決的。
通過使用第三方包jxl.jar,我以前導(dǎo)過數(shù)據(jù),也是解析Excel,將Excel中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)中,這個(gè)包很好下,如果找不到可以留下郵箱
//程序說明: 要導(dǎo)入jxl.jar到Classpath中。
import jxl.*;
import java.io.*;
import jxl.write.*;
/**
* java讀取Excel表格,拷貼心、更新Excel工作薄
*/
public class Test1 {
public static void main(String args) {
jxl.Workbook rwb = null;
try{
//構(gòu)建Workbook對(duì)象 只鄭緩讀Workbook對(duì)象
//直接從本地文件創(chuàng)建Workbook
//從輸入流創(chuàng)建Workbook
InputStream is = new FileInputStream(”
rwb = Workbook.getWorkbook(is);
//Sheet(術(shù)語:工作表)就是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();
//獲取指這下單元格的對(duì)象引用
for(int i=0;i
for(int j=0;j
Cell cell = rs.getCell(j,i);
System.out.print(cell.getContents()+” “);
}
System.out.println();
}
//利用已經(jīng)創(chuàng)建的Excel工作薄創(chuàng)建新的可寫入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(”
//讀取之一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//獲取之一個(gè)單元格對(duì)象
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對(duì)象
wwb.write();
wwb.close();
}catch(Exception e){
e.printStackTrace();
}
finally{
//操作完成手晌時(shí),關(guān)閉對(duì)象,翻譯占用的內(nèi)存空間
rwb.close();
}
}
}
利用隱此poi組件讀灶畝迅出excel文件內(nèi)部及各單元格 再插入到表的相應(yīng)字段中。我一直是這么做的耐知?;蛘呃胘xl組件。
關(guān)于java實(shí)現(xiàn)導(dǎo)入excel到數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營(yíng)銷公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
文章標(biāo)題:Java輕松實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)!(java實(shí)現(xiàn)導(dǎo)入excel到數(shù)據(jù)庫(kù))
當(dāng)前鏈接:http://www.5511xx.com/article/djhpiso.html


咨詢
建站咨詢
