poi解析xlsx

2059 ワード

poiでxlsを読み取るときにxlsxを読まなければならないことを知っています.今、私がテストしたdemoを共有します.
package com.lt.main;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

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;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.lt.util.DBUtil;
import com.lt.util.Oracle;

public class ReadMain {

	
	public static void readFile(File file){
		
		Connection con = null;
		PreparedStatement ps = null;
		String sql = "insert into t_xls(mobile) values(?)";
		int count = 0;
		try {
			con = DBUtil.getConnection();
			ps = con.prepareStatement(sql);
			
			
			InputStream is = new FileInputStream(file);
			XSSFWorkbook wb = new XSSFWorkbook(is);
			XSSFCell cell = null;
	        for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
	        	XSSFSheet st = wb.getSheetAt(sheetIndex);
	        	for (int rowIndex = 0; rowIndex <= st.getLastRowNum(); rowIndex++) {
	        		XSSFRow row = st.getRow(rowIndex);
	        		cell = row.getCell(0);
	        		cell.setCellType(XSSFCell.CELL_TYPE_STRING);
	        		count++;
	        		ps.setString(1, cell.getStringCellValue());
	        		ps.addBatch();
	        		
	        		if(count % 10000 == 0){
	        			ps.executeBatch();
	        		}
	        	}
	        }
	        ps.executeBatch();
	        
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			DBUtil.close(ps);
			DBUtil.close(con);
		}
	}
	
	public static void main(String[] args) {
		DBUtil.startProxool();
		readFile(new File("C:\\Documents and Settings\\Administrator\\ \\22.xlsx"));
		
	}
}

データベースにコンテンツを書き込む