博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poi readexcelToDatabase
阅读量:5963 次
发布时间:2019-06-19

本文共 6260 字,大约阅读时间需要 20 分钟。

hot3.png

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.sql.SQLException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Vector;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;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;/** * 读取Excel将数据存入到数据库表中的工具类 *  * @author 程志平 *  */public class ReadExcelToDBTableTool {	public void readExcel2007(String filePath, String tableName)			 {		try {//			InputStream inp = new FileInputStream(filePath);//			Workbook wb = WorkbookFactory.create(inp);			 POIFSFileSystem file =new POIFSFileSystem(new FileInputStream("E:\\项目文档资料\\一信通feature list2012-1-11.xls")); // 打开输入流			  HSSFWorkbook wb = new HSSFWorkbook(file);			//XSSFWorkbook wb = new XSSFWorkbook(file);			int sheetSize = wb.getNumberOfSheets();			for (int i = 0; i < sheetSize; i++) {				HSSFSheet sheet = wb.getSheetAt(i);//				Sheet sheet = wb.getSheetAt(i);				for (Iterator rit = sheet.rowIterator(); rit.hasNext();) {					// 迭代行					HSSFRow row = (HSSFRow) rit.next();					// 迭代单元格					Vector datas = new Vector();					for (Iterator cit = row.cellIterator(); cit.hasNext();) {						// 定义集合datas用于存Excel中一个行的数据						HSSFCell cell = (HSSFCell) cit.next();						String value = getValue2007(cell);						// 注意行和列是基于0索引的						System.out.print(cell.getRowIndex() + ":" + cell.getColumnIndex() + " ");						datas.add(value);						// 开始操作单元格					}					// 向表中插入数据					//DBFactory.insertData(dbConn, tableName, datas);				}			} 		} catch (Exception e) {			e.printStackTrace();					} 	}	/**	 * 将Excel数据导入到表中	 * 	 * @param filePath	 *            Excel路径	 * @param tableName	 *            表名	 */	public void readExcel(String filePath, String tableName)			throws Exception {		try {			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream( filePath));			// 创建工作簿			HSSFWorkbook workBook = new HSSFWorkbook(fs);			System.out.println("工作表个数 :" + workBook.getNumberOfSheets());			for (int i = 0; i < workBook.getNumberOfSheets(); i++) {				// 创建工作表				HSSFSheet sheet = workBook.getSheetAt(i);				int rows = sheet.getPhysicalNumberOfRows(); // 获得行数				if (rows > 0) {					sheet.getMargin(HSSFSheet.TopMargin);					for (int r = 0; r < rows; r++) { // 行循环						HSSFRow row = sheet.getRow(r);						if (row != null && r != 0) {// 不取第一行							int cells = row.getLastCellNum();// 获得列数							// 定义集合datas用于存Excel中一个行的数据							Vector datas = new Vector();							for (short c = 0; c < cells; c++) { // 列循环								HSSFCell cell = row.getCell(c);								if (cell != null) {									String value = getValue(cell);									System.out.println("第" + r + "行 " + "第" + c + "列:" + value);									datas.add(value);								}							}							// 向表中插入数据							///DBFactory.insertData(dbConn, tableName, datas);						}					}				} else {					break;				}			}		} catch (Exception ex) {			ex.printStackTrace();			System.out.println("readExcel 方法异常:" + ex);			throw ex;		}	}	public String getValue2007(HSSFCell cell) {		String value = "";		switch (cell.getCellType()) {		case Cell.CELL_TYPE_STRING:			System.out.println(cell.getRichStringCellValue().getString());			value=cell.getRichStringCellValue().getString();			break;		case Cell.CELL_TYPE_NUMERIC:			if (DateUtil.isCellDateFormatted(cell)) {				System.out.println(cell.getDateCellValue());				java.util.Date date = cell.getDateCellValue();				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");				value = format.format(date);			} else {				System.out.println(cell.getNumericCellValue());				value = String.valueOf(cell.getNumericCellValue());			}			break;		case Cell.CELL_TYPE_BOOLEAN:			System.out.println(cell.getBooleanCellValue());			value = " " + cell.getBooleanCellValue();			break;		case Cell.CELL_TYPE_FORMULA:			System.out.println(cell.getCellFormula());			value = cell.getCellFormula();			break;		default:			System.out.println();		}		return value;	}	/**	 * 获取Excel中某个单元格的值	 * 	 * @param cell	 * @return	 * @throws ParseException	 */	public String getValue(HSSFCell cell) throws ParseException {		String value = "";		switch (cell.getCellType()) {		case HSSFCell.CELL_TYPE_NUMERIC: // 数值型			if (HSSFDateUtil.isCellDateFormatted(cell)) {				// 如果是date类型则 ,获取该cell的date值				value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue())						.toString();				java.util.Date date1 = new Date(value);				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");				value = format.format(date1);			} else {// 纯数字				value = String.valueOf(cell.getNumericCellValue());			}			break;		/* 此行表示单元格的内容为string类型 */		case HSSFCell.CELL_TYPE_STRING: // 字符串型			value = cell.getStringCellValue();			break;		case HSSFCell.CELL_TYPE_FORMULA:// 公式型			// 读公式计算值			value = String.valueOf(cell.getNumericCellValue());			if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串				value = cell.getStringCellValue().toString();			}			cell.getCellFormula();			break;		case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔			value = " " + cell.getBooleanCellValue();			break;		/* 此行表示该单元格值为空 */		case HSSFCell.CELL_TYPE_BLANK: // 空值			value = "";			break;		case HSSFCell.CELL_TYPE_ERROR: // 故障			value = "";			break;		default:			value = cell.getStringCellValue().toString();		}		return value;	}	@SuppressWarnings("deprecation")	public static void main(String[] args) throws SQLException {//		// ReadExcelToDBTableTool tool = new ReadExcelToDBTableTool();//		// tool.readExcel("E:\\javaDemo\\person.xls","person");//		// tool.getColumns("person");//		// 2009/9/12//		String dateValue = "Sat Jun 18 00:00:00 CST 2011";//		java.util.Date date1 = new Date(dateValue);//		// java.util.Date date = format.parse(value) ;//		System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date1));		ReadExcelToDBTableTool tool=new ReadExcelToDBTableTool();			tool.readExcel2007("E:/项目文档资料/一信通feature list2012-1-11.xls", "");			}}

转载于:https://my.oschina.net/duanyunhu/blog/42942

你可能感兴趣的文章
常见排序算法及对应的时间复杂度和空间复杂度
查看>>
业界 | 在德州叫一辆自动驾驶车,Drive.ai安排了7辆无人车展开真实试验
查看>>
三家公司在SD-WAN方面的新动作
查看>>
C#在PDF中如何以不同颜色高亮文本
查看>>
在同一页面显示多个JavaScript统计图表
查看>>
Mac电脑Tomcat下载及安装(详细)MAC在Eclipse里配置tomcat
查看>>
多线程之-----------定时器
查看>>
C#语法——反射,架构师的入门基础。
查看>>
Beego Models 之 一
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
Kubernetes部署的最佳安全实践
查看>>
理解C语言——从小菜到大神的晋级之路(8)——数组、指针和字符串
查看>>
Windows Shellcode学习笔记——shellcode在栈溢出中的利用与优化
查看>>
关于多线程中使用SendMessage
查看>>
【云栖大会】阿里云移动云Apsara Mobile重磅发布 推出Cloud Native App全新研发范式...
查看>>
【PMP】Head First PMP 学习笔记 第九章 人力资源管理
查看>>
2015年末必备前端工具集
查看>>
【Solidity】8. 杂项 - 深入理解Solidity
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
Go语言大神亲述:历七劫方可成为程序员!
查看>>