日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 将excel中的内容导入数据库中

發(fā)布時(shí)間:2024/1/17 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 将excel中的内容导入数据库中 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ExcelReader類(lèi),用來(lái)從excel中讀取數(shù)據(jù)的,網(wǎng)上版本的修改版。

package dataDML;import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 操作Excel表格的功能類(lèi) * @author: * @version */ public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; /** * 讀取Excel表格表頭的內(nèi)容 * @param InputStream * @return String 表頭內(nèi)容的數(shù)組 * */ public String[] readExcelTitle(InputStream is) { try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); row = sheet.getRow(0); //標(biāo)題總列數(shù) int colNum = row.getPhysicalNumberOfCells(); String[] title = new String[colNum]; for (int i=0; i<colNum; i++) { title[i] = getTitleValue(row.getCell((short) i)); } return title; } /** * 獲取單元格數(shù)據(jù)內(nèi)容為字符串類(lèi)型的數(shù)據(jù) * @param cell Excel單元格 * @return String 單元格數(shù)據(jù)內(nèi)容,若為字符串的要加單引號(hào) */ public String getStringCellValue(HSSFCell cell) { String strCell = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strCell = "'" + cell.getStringCellValue() + "'"; break; case HSSFCell.CELL_TYPE_NUMERIC: strCell = String.valueOf(cell.getNumericCellValue()); } break; case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: strCell = "''"; break; default: strCell = "''"; break; } if (strCell.equals("''") || strCell == null) { return ""; } if (cell == null) { return ""; } return strCell; } public String getTitleValue(HSSFCell cell) { String strCell = cell.getStringCellValue(); return strCell; } }

  下面是利用這個(gè)類(lèi)讀取數(shù)據(jù)并存儲(chǔ)到已有的數(shù)據(jù)表中,這里要注意的一點(diǎn)是,從excel中讀取的日期數(shù)據(jù),除非是以文本形式存儲(chǔ)的,取得的數(shù)據(jù)都不是日期形式,而是數(shù)字,是該日期距離1900年1月日的天數(shù),為了能夠正確存儲(chǔ)到數(shù)據(jù)庫(kù)中,我對(duì)該數(shù)據(jù)所對(duì)應(yīng)的字段名進(jìn)行了判斷,如果包含"date",也就是日期字段的數(shù)據(jù),就對(duì)其進(jìn)行轉(zhuǎn)化。具體見(jiàn)下面代碼:

package dataDML;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat;import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class DataInsert {public static String driver = "com.mysql.jdbc.Driver";public static String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8";//之所以鏈接地址后面會(huì)添加參數(shù),是為了防止中文亂碼public static Connection conn;public static void main(String[] args) {try {Class.forName(driver);conn = DriverManager.getConnection(url,"test", "test123");insertData("tbname");//tbname,為要插入的數(shù)據(jù)表名} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void insertData(String tbName){try {//casilin:插入數(shù)據(jù),先從excel中讀取數(shù)據(jù)InputStream is = new FileInputStream("D://test.xls");ExcelReader excelReader = new ExcelReader();String[] colName = excelReader.readExcelTitle(is);//開(kāi)始建立插入的sql語(yǔ)句,每一次插入的開(kāi)頭都是不變的,都是字段名StringBuffer sqlBegin = new StringBuffer("insert into " + tbName + "(");//獲取字段名,并添加入sql語(yǔ)句中for (int i = 0; i < colName.length; i ++){sqlBegin.append(colName[i]);if (i != colName.length -1) {sqlBegin.append(",");}}sqlBegin.append(") values(");is.close();//下面讀取字段內(nèi)容POIFSFileSystem fs;HSSFWorkbook wb;HSSFSheet sheet;HSSFRow row;is = new FileInputStream("D://casilin//testFiles//test.xls");fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); sheet = wb.getSheetAt(0);//得到總行數(shù) int rowNum = sheet.getLastRowNum(); row = sheet.getRow(0); int colNum = row.getPhysicalNumberOfCells(); //正文內(nèi)容應(yīng)該從第二行開(kāi)始,第一行為表頭的標(biāo)題 String sql = new String(sqlBegin);String temp;for (int i = 1; i <= rowNum; i++) { row = sheet.getRow(i); int j = 0; while (j<colNum) { temp = excelReader.getStringCellValue(row.getCell((short) j)).trim();//日期的特殊處理if (colName[j].indexOf("date") != -1){temp = temp.substring(0, temp.length()-2);//excel是以1990年為基數(shù)的,而java中的date是以1970年為基數(shù)的。所以要扣除差 25569天Date d = new Date((Long.valueOf(temp) - 25569) * 24 * 3600 * 1000);DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");temp = "'" + formater.format(d) + "'";}sql = sql + temp;if (j != colNum-1){sql = sql + ",";}j ++; } sql = sql + ")";System.out.println(sql.toString());PreparedStatement ps = conn.prepareStatement(sql.toString());ps.execute();ps.close();sql = "";sql = sqlBegin.toString();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) { e.printStackTrace(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}

  這里會(huì)用到一個(gè)Jar包:poi.jar,自己可以到網(wǎng)上搜一下,我就不提供地址了。

轉(zhuǎn)載于:https://www.cnblogs.com/zhangdp/archive/2012/12/14/2817863.html

總結(jié)

以上是生活随笔為你收集整理的Java 将excel中的内容导入数据库中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲91网 | heyzo久久| 亚洲精品中字 | 特级西西444www | 国产不卡在线视频 | 国内精久久久久久久久久人 | 国产在线观看中文字幕 | 麻豆av一区二区三区 | 男人你懂的网站 | 秋霞国产午夜精品免费视频 | 日本一区二区黄色 | 欧美黑人性受xxxx精品 | 中文字幕第35页 | 成都电影免费大全 | 久久亚洲视频 | 亚洲精品自拍视频 | 欧美成人一二区 | 国产高中女学生第一次 | 日本黄xxxxxxxxx100| 国产精品免费在线 | 天堂在线观看 | 中文字幕一区二区三区四区五区 | av高清在线免费观看 | 一区二区三区在线视频观看 | 在线你懂得 | 在线观看一区视频 | 97公开视频| 国产午夜大片 | 欧美性生活一区二区 | 天堂男人av | 国产美女在线观看 | 午夜不卡久久精品无码免费 | 本道久久 | 久久亚洲私人国产精品va | 草草影院av | 亚洲第一第二区 | 97久久国产 | 国产又爽又黄的视频 | 高清无码视频直接看 | av不卡免费在线 | 国产一区二区黄 | 天天看片天天射 | 中文一区二区在线播放 | 天堂草在线观看 | 免费一级毛片麻豆精品 | av合集| 日本黄色的视频 | 天天操网址 | 亚洲三级网站 | 国产精品一区在线观看 | 国产视频一区二区 | 欧美一区二区三区公司 | 波多野结衣理论片 | av国产一区 | 亚洲av无码久久精品色欲 | 人人看人人做 | av小说在线观看 | 国产69精品久久久 | 日韩精品高清在线观看 | 岛国免费av | 一本色道久久88亚洲精品综合 | 欧美成人国产va精品日本一级 | 中文av网| 丰满少妇高潮在线观看 | 久操操 | 精品人妻一区二区三区日产乱码 | 在线观看中文字幕视频 | caopeng视频 | 日本高清不卡视频 | 91精品久久久久久综合五月天 | 欧美精品一区二区在线播放 | 青草视频在线播放 | 亚洲我射 | av成人在线看 | 97影院在线午夜 | 国产污视频在线 | 国产精品破处 | 丁香激情五月 | 91久久在线 | 成人免费xxxxx在线观看 | 国产成人一区二区三区小说 | 久久久噜噜噜久久久 | 在线视频亚洲 | 国产精品免费91 | 亚洲24p | 国产欧美视频一区 | 超碰网址 | 韩国三级免费 | 亚洲香蕉av | 中文字幕在线导航 | 亚洲精品香蕉 | 91精品免费看 | 都市激情 自拍偷拍 | 亚洲精品久久久久久久久久久久久 | 久久精品国产欧美亚洲人人爽 | 午夜视频福利网站 | www九九热 | 国产特黄级aaaaa片免 | 青青草自拍 |