使用JDBC读取本地的Excel文件并批量更新数据
来源:互联网 发布:怎么查端口号 编辑:程序博客网 时间:2024/06/05 20:06
package com.jqgj.test;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.util.ArrayList;import java.util.List;import org.apache.commons.io.FilenameUtils;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellValue;import org.apache.poi.ss.usermodel.FormulaEvaluator;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 ImportUserNameTest {/** * Excel 2003 */private final static String XLS = "xls";/** * Excel 2007 */private final static String XLSX = "xlsx";/** * 分隔符 */private final static String SEPARATOR = "|";/** * 由Excel文件的Sheet导出至List * * @param file * @param sheetNum * @return */public static List<Terminal> exportListFromExcel(File file, int sheetNum)throws IOException {return exportListFromExcel(new FileInputStream(file),FilenameUtils.getExtension(file.getName()), sheetNum);}/** * 由Excel流的Sheet导出至List * * @param is * @param extensionName * @param sheetNum * @return * @throws IOException */public static List<Terminal> exportListFromExcel(InputStream is,String extensionName, int sheetNum) throws IOException {Workbook workbook = null;if (extensionName.toLowerCase().equals(XLS)) {workbook = new HSSFWorkbook(is);} else if (extensionName.toLowerCase().equals(XLSX)) {workbook = new XSSFWorkbook(is);}return exportListFromExcel(workbook, sheetNum);}/** * 由指定的Sheet导出至List * * @param workbook * @param sheetNum * @return * @throws IOException */private static List<Terminal> exportListFromExcel(Workbook workbook,int sheetNum) {Sheet sheet = workbook.getSheetAt(sheetNum);// 解析公式结果FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();List<Terminal> list = new ArrayList<Terminal>();int minRowIx = sheet.getFirstRowNum();int maxRowIx = sheet.getLastRowNum();for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {Terminal terminal = new Terminal();Row row = sheet.getRow(rowIx);short minColIx = row.getFirstCellNum();short maxColIx = row.getLastCellNum();for (short colIx = minColIx; colIx <= maxColIx; colIx++) {Cell cell = row.getCell(new Integer(colIx));CellValue cellValue = evaluator.evaluate(cell);if (cellValue == null) {continue;}switch(colIx){case 0://如果手机号码是数字格式则转换(放开注释),如果是文本则不转换//DecimalFormat df = new DecimalFormat("#");//String sjhm = df.format(cellValue.getNumberValue());String sjhm = cellValue.getStringValue();terminal.setDwhm(sjhm);break;case 1:String name=cellValue.getStringValue();terminal.setZdmc(name);break;default:break;}}list.add(terminal);}return list;}/** * @param args */public static void main(String[] args) {String path = "f:\\telName.xlsx";try {List<Terminal> listS= exportListFromExcel(new File(path),0);/*for(int i=0;i<listS.size();i++){Terminal t = listS.get(i);System.out.println(t.getZdmc()+":"+t.getDwhm());}*/String result = exeBatchParparedSQL(listS);System.out.println("更新结果:"+result);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 批量更新 */public static String exeBatchParparedSQL(List<Terminal> listT){String result = "失败";String driver = "oracle.jdbc.OracleDriver";// 驱动字符串String url = "jdbc:oracle:thin:@IP:端口:数据库名字";// 链接字符串String user = "XXX";// 用户名String password = "XXX";// 密码Connection con = null;PreparedStatement pstm = null;try {Class.forName(driver);con = DriverManager.getConnection(url, user, password);String sql = "update T_userInfo set zdmc=? where dwhm=?";pstm = con.prepareStatement(sql);for(int i=0;i<listT.size();i++){Terminal t = listT.get(i);pstm.setString(1,t.getZdmc());pstm.setString(2,t.getDwhm());pstm.addBatch(); }int a[] = pstm.executeBatch();System.out.println("条数:"+a.length);if (a.length>0) {con.commit();result = "成功";}} catch (Exception e) {try {con.rollback();} catch (Exception ec) {LogUtil.log.info("更新员工姓名回滚出错" + e.getMessage());}e.printStackTrace();} finally {PoolManager.closeConnection(con, pstm, null);}return result;}}
0 0
- 使用JDBC读取本地的Excel文件并批量更新数据
- 通过Loadrunner读取excel表数据并批量更新到Oracle中
- jdbc批量更新数据
- 使用jxl读取模板文件,写入数据并导出excel
- 读取大数据量excel并执行批量更新数据库操作
- java读取Excel数据,然后写入到txt文件,并批量保存到oracle数据库中
- Powershell调用Excel批量读取指定单元格数据并输出csv结果文件
- 使用matlab批量的读取txt文件,并批量的删除文件中的空格 附:代码
- php 结合缓冲区读取excel数据并批量导入mysql
- 读取本地txt文件数据和excel文件数据
- 读取本地EXCEL文件
- 使用matlab读取excel数据并保存
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- java读取本地的excel文件
- C# Selenium 读取本地Excel文件并测试
- 从Excel文件读取数据批量导入到Mysql数据库
- 从Mysql数据库读取数据批量导入到Excel文件
- 使用JAVA读取EXCEL文件里面的数据
- java代理模式、动态代理(JDK,CGLIB)
- TCP、UDP、HTTP、SOCKET之间的区别与联系
- 第002个故事,漂亮的PPT都有哪些工作量!
- Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
- #pragma once与#ifndef两种防止头文件二次编译的区别
- 使用JDBC读取本地的Excel文件并批量更新数据
- innodb_flush_log_at_trx_commit参数性能的测试
- 关于oracle的数查询
- 一致性hash
- iOS js与objective-c的交互(转)
- ubuntu软件源设置
- Intent的常用Flag参数
- Xcode删除证书和清理编译项目产生的缓存
- word-wrap:break-word与word-break:break-all的关系及强制换行与强制不换行问题