亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

POI遍歷Excle表

2019-11-11 03:47:59
字體:
來源:轉載
供稿:網友

最近一個哥哥給我出了一個題目:用POI把Excle表的數據插入到數據庫中。

下面是我做的:

明確兩點。1.讀取Excel表的數據

2.連接數據庫(Oracle)并插入數據

1。首先Maven導包:我是從csdn下的,然后用    mvn install:install-file -Dfile= -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar 命令將包導入本地Maven倉庫。

2。第二步連接數據庫:也是從csdn下的Oracle的數據源用Maven命令導入本地倉庫

   

下面是連接數據并插入數據的相關代碼:

public class DBHelper {	PRivate Connection conn = null;	private PreparedStatement pstmt = null;	private ResultSet rs = null;		static{		try{   	    //加載MySQL的驅動類   	    Class.forName("oracle.jdbc.driver.OracleDriver") ;   	    }catch(ClassNotFoundException e){   	    System.out.println("找不到驅動程序類 ,加載驅動失?。?quot;);   	    e.printStackTrace() ;   	   }	}		public Connection getConnection(){		try {//			DataSource dataSource=(DataSource)BasicDataSourceFactory.createDataSource(Env.getInstance());//			Context context=new InitialContext();//			DataSource dataSource=(DataSource)context.lookup("java:comp/env/jdbc/orcl");			conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl" , "wb" , "a" ) ;		} catch (Exception e) {				e.printStackTrace();			}		return conn;	}	/**	 * 字符轉換	 * 	 * @param pstmt	 *           	 * @param params	 *           	 * @throws SQLException	 */	public void setValue(PreparedStatement pstmt, List<Object> params)			throws SQLException {		// 字符轉換		if (params != null && params.size() > 0) {			Object obj = null;			String type = "";			for (int i = 0; i < params.size(); i++) {				obj = params.get(i);				if (obj != null) {					type = obj.getClass().getName();					if ("[B".equals(type)) {						pstmt.setBytes(i + 1, (byte[]) obj);					} else {						pstmt.setString(i + 1, String.valueOf(obj));					}				} else {					pstmt.setString(i + 1, String.valueOf(obj));				}			}		}	}	/**	 * 更新數據	 * 	 * @param sql	 *           	 * @param params	 *           	 * @return	 */	public int update(String sql, List<Object> params) {		int result = 0;		try {			conn = this.getConnection();			pstmt = conn.prepareStatement(sql);//預處理			this.setValue(pstmt, params);			result = pstmt.executeUpdate(); // 執行sql語句		} catch (SQLException e) {			e.printStackTrace();		}		return result;	}3.連接數據庫成功后,就是用Apache軟件基金會的開放源碼函式庫,也就是POI來讀取Excle表格的數據:

代碼如下:

package com.jjz.util;import java.io.FileInputStream;import java.io.IOException;import java.util.Iterator;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class Ddl {	private Workbook wb;	private FileInputStream fis;	private DBHelper db ;	public Workbook createWorkbook(String filePath) throws IOException{		if(filePath != null){			fis = new FileInputStream(filePath);			if(filePath.endsWith(".xls")){				//2003版本的excel,用.xls結尾				wb = new HSSFWorkbook(fis);//得到工作簿			}else if(filePath.endsWith(".xlsx")){				 //2007版本的excel,用.xlsx結尾				wb = new XSSFWorkbook(fis);//得到工作簿			}else{			}			return wb;		}		return null;	}	/**	 * 第一種遍歷方式:純粹的for循環	 * @param wbk	 */	public void insert2DataBase(Workbook wbk){		db = new DBHelper();		StringBuffer sql;		if(wbk != null){			Sheet sheet = wbk.getSheetAt(0);			Row row;			Cell cell = null;			if(sheet != null){				for(int i = 1; i < sheet.getPhysicalNumberOfRows(); i ++){					sql = new StringBuffer("insert into test (Tid, Tname) values ");					row = sheet.getRow(i);										String bh = "";					String xm = "";					for(int j = 0; j < row.getPhysicalNumberOfCells(); j ++){						cell = row.getCell(j);						switch(cell.getCellType()){						case HSSFCell.CELL_TYPE_NUMERIC: // 數字  	                        sql.append("(").append( String.valueOf((int)cell.getNumericCellValue()) ).append(",");  	                        bh = String.valueOf((int)cell.getNumericCellValue());	                        break;  	                    case HSSFCell.CELL_TYPE_STRING: // 字符串  	                    	sql.append("'").append( cell.getStringCellValue() ).append("')");  	                    	xm = cell.getStringCellValue();	                    	break;  	                    /*case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean  	                        cellValue = cell.getBooleanCellValue() + "";  	                        break;  	                    case HSSFCell.CELL_TYPE_FORMULA: // 公式  	                        cellValue = cell.getCellFormula() + "";  	                        break;  	                    case HSSFCell.CELL_TYPE_BLANK: // 空值  	                        cellValue = "";  	                        break; 	                    case HSSFCell.CELL_TYPE_ERROR: // 故障  	                        cellValue = "非法字符";  	                        break;  */ 	                    default:  	                        break; 	                    } 						}					int result = db.update(sql.toString(), null);					if(result > 0){ 						System.out.println("數據插入成功:" + sheet.getRow(0).getCell(0).toString()+ "=" + bh + "," + sheet.getRow(0).getCell(1).toString() + "=" +xm);					}				}			}		}	}		/**	 * 換一種遍歷方式	 * @param wb	 */	public void doSomething(Workbook wb){		if(wb != null){			Sheet sheet;			Row row;			//一個工作簿可能不止一個sheet表格			for(int i = 0; i < wb.getNumberOfSheets(); i ++){				sheet = wb.getSheetAt(i);				//循環遍歷每個sheet表的沒行數據				for(int j = 1; j < sheet.getPhysicalNumberOfRows(); j ++){					row = sheet.getRow(j);					//用迭代遍歷,因為我看見它有一個iterator()方法					for(Iterator<Cell> cell = row.iterator(); cell.hasNext() ;){						System.out.print( cell.next().toString() + "  ");					}					System.out.println();				}			}		}	}}4.兩部合并,謝了測試代碼:

package com.jjz.poi;import java.io.IOException;import org.apache.poi.ss.usermodel.Workbook;import com.jjz.util.Ddl;public class WbTest {	public static void main(String[] args) {		Ddl ddl = new Ddl();		Workbook wb = null;		try {			wb = ddl.createWorkbook("C://Users//Administrator//Desktop//test.xls");		} catch (IOException e) {			e.printStackTrace();		}				if(wb != null){			ddl.insert2DataBase(wb);						ddl.doSomething(wb);		}			}	}

發現數據庫中插入了數據:

控制臺輸出了如下數據:

發現可行。

總結:

個人發現這樣寫有很大的一個弊端就是插入數據的時候,每讀取一行數據就把它插入到數據庫。這樣要頻繁寫重復的sql語句去的跟新(插入)數據庫。麻煩(因為不是MySql數據庫)??梢詫懸粋€事務,一次性插入,要么成功,要么失敗后回滾。還有一點就是對于數據的處理可以寫一個People類,表格中的第一和第二兩列的屬性作為它的變量,有點像Springmvc從jsp頁面傳對象過來一樣,用它來傳值。不知道行不行,QAQ。總之,這一段程序缺點多多。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品性视频| 国产成人精品日本亚洲专区61| 成人免费观看49www在线观看| 91九色国产视频| 久久久av电影| 日韩欧亚中文在线| 亚洲精品国产精品国产自| 久久精品久久精品亚洲人| 久久99精品久久久久久青青91| 久久久女女女女999久久| 日韩中文字幕av| 清纯唯美日韩制服另类| 亚洲成人教育av| 成人一区二区电影| 最近2019免费中文字幕视频三| 精品视频—区二区三区免费| 亚洲欧美日韩图片| 欧美激情精品久久久久| 亚洲精品成人av| 久久久国产视频| 欧美国产日韩中文字幕在线| 亚洲成人动漫在线播放| 2018中文字幕一区二区三区| 精品五月天久久| 国产区精品在线观看| 欧美福利视频网站| 亚洲免费视频网站| 狠狠躁夜夜躁人人躁婷婷91| 日韩在线精品视频| 亚洲国产精品嫩草影院久久| 亚洲第一中文字幕| 国外色69视频在线观看| 日韩精品免费在线视频| 琪琪亚洲精品午夜在线| 国内精品小视频| 午夜精品视频网站| 538国产精品一区二区免费视频| 日本成熟性欧美| 91久久久久久久久久久| yellow中文字幕久久| 久久久久久久香蕉网| 国外成人在线直播| 美女扒开尿口让男人操亚洲视频网站| 97免费视频在线播放| 成人啪啪免费看| 亚洲黄色www| 91精品国产99| 国产精品一区二区3区| 日韩中文在线中文网三级| 国产亚洲日本欧美韩国| 欧美激情久久久久久| 久久久电影免费观看完整版| 国产精品视频精品视频| 午夜精品久久久久久99热软件| 国产婷婷97碰碰久久人人蜜臀| 亚洲字幕在线观看| 欧洲成人性视频| 亚洲影院色无极综合| 日韩欧美中文字幕在线播放| 久久久久久噜噜噜久久久精品| 国产精品爱久久久久久久| 成人国产精品日本在线| 国产91精品视频在线观看| 日日骚久久av| 国产成人啪精品视频免费网| 国语自产精品视频在线看抢先版图片| 日韩经典中文字幕在线观看| 日韩精品亚洲精品| 久久久电影免费观看完整版| 欧美成人亚洲成人| 国产精品丝袜一区二区三区| 久久九九有精品国产23| 午夜精品在线观看| 国产精品扒开腿做爽爽爽视频| 欧美成人精品xxx| 亚洲国产成人91精品| 国产噜噜噜噜噜久久久久久久久| 狠狠综合久久av一区二区小说| 欧美精品手机在线| 美女999久久久精品视频| 亚洲精品国产品国语在线| 疯狂蹂躏欧美一区二区精品| 成人黄色av免费在线观看| 在线观看国产精品91| 爽爽爽爽爽爽爽成人免费观看| 精品国偷自产在线视频| 亚洲成人亚洲激情| 91色琪琪电影亚洲精品久久| 日韩欧美亚洲范冰冰与中字| 在线精品91av| 欧美精品在线观看91| 国产精品第七十二页| 国产免费一区二区三区在线观看| 日本欧美黄网站| 国产精品一区二区三区久久| 日韩av在线播放资源| 1769国内精品视频在线播放| 国产精品久久久久免费a∨大胸| 欧美成人午夜视频| 色偷偷偷亚洲综合网另类| 91免费观看网站| 韩国日本不卡在线| 欧美在线一级va免费观看| 成人欧美一区二区三区黑人| 91欧美日韩一区| 91精品综合久久久久久五月天| 国产在线精品成人一区二区三区| 色妞色视频一区二区三区四区| 自拍偷拍亚洲欧美| 大伊人狠狠躁夜夜躁av一区| 日韩美女主播视频| 日韩中文在线视频| 欧美成人h版在线观看| 亚洲综合最新在线| 国产中文欧美精品| 国产精品成人免费视频| 成人黄色免费片| 日韩电影视频免费| 色偷偷888欧美精品久久久| 欧美日韩在线视频观看| 亚洲黄色片网站| 亚洲综合在线小说| 精品久久久久久久久中文字幕| 久久影视电视剧凤归四时歌| 麻豆成人在线看| 久久噜噜噜精品国产亚洲综合| xxx成人少妇69| 国产精品视频久| 国产69精品99久久久久久宅男| 日韩av综合网| 日本精品在线视频| 国内精品免费午夜毛片| 国产精品九九久久久久久久| 欧美精品18videos性欧| 欧美风情在线观看| 欧美激情喷水视频| 日韩国产高清视频在线| 久久人人爽人人爽人人片av高请| 亚洲一区二区三区视频播放| 欧美日韩午夜视频在线观看| 国产日产欧美精品| 亚洲一区二区少妇| 国产精品色婷婷视频| 国产精品h在线观看| 日韩精品中文字幕久久臀| www高清在线视频日韩欧美| 亚洲iv一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 欧美成人精品不卡视频在线观看| 亚州成人av在线| 精品国产视频在线| 这里只有精品视频在线| 国内精品小视频在线观看| 精品自在线视频| 国产精品无码专区在线观看| 欧美激情在线视频二区| 亚洲性69xxxbbb| 国产精品久久久久久av| 国内精久久久久久久久久人| 久久久国产成人精品| 不卡av在线网站| 国产99视频精品免视看7| 91亚洲精品视频| 狠狠色狠狠色综合日日五|