讲师中心 微信公众号
AI工具推荐 视频效率加速

excel导入数据库oracle

夜敏吖_5146

夜敏吖_5146

发布时间:2016-05-26 08:18:21

|

1345人浏览过

|

来源于php中文网

原创

1.读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可 

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * @author 作者:gzh
 * @version 创建时间:2015-4-30上午11:26:13
 * 类说明:
 * 1.读取execl(只能读取.xls的execl,即只能读取03版的),如果是.xlsx类型的话 手工转化一下即可
 * 2.应用的jar包是apache的poi系类的jar包和
 * 3.ojdbc14.jar的数据库连接包。
 **/
public class ExeclOperateMain {

	/**
	 * 方法说明:
	 * @param args
	 * @return void
	 */
	public static void main(String[] args) throws Exception {
		ExeclOperateMain e=new ExeclOperateMain();
		e.getExcel();
		System.out.println("Execl导入完成!");
	}


	
	/**
	 * 用于连接oracle数据库的方法
	 * 只需修改中的参数getConnection("url","用户名","密码");
	 */
	public Connection conn(){
		try {
		//第一步:加载JDBC驱动
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//第二步:创建数据库连接
		Connection con =DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.202:1521:orcl", "mdb", "mdb");
		return con;
		}catch(ClassNotFoundException cnf){
		  System.out.println("驱动未找到!:"+cnf);
		  return null;
		}catch(SQLException sqle){
		  System.out.println("不能连接数据库:"+sqle);
		  return null;
		}
		  catch (Exception e) {
		System.out.println("加载失败 JDBC/ODBC driver.");
		return null;
		}
	}
	/**
	 * excel表  的读取
	 * @throws Exception
	 */
	public void getExcel() throws Exception {
		// 创建对Excel工作簿文件的引用		
		HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("E:\Workspaces\pt-zt-v1.0\src\test.xls"));		
		 // 创建对工作表的引用。
		 // 在Excel文档中,第一张工作表的缺省索引是0,
		 // 读取左上端单元
		 for (int i = 0; i < workbook.getNumberOfSheets(); i++) {// 循环sheet,3列
				 if(workbook.getSheetAt(i).getPhysicalNumberOfRows()>0){//行,6行
					 HSSFSheet childSheet = workbook.getSheetAt(i);
					 	for(int rowi=1;rowi<40000;rowi++){
					 		// || childSheet.getRow(rowi).getCell(0).equals("") || childSheet.getRow(rowi).getCell(0)==null
					 		if(childSheet.getRow(rowi)==null) break;
					 		String cell1=this.publicExcel(childSheet.getRow(rowi).getCell(0));
					 		if(cell1==null) break;
					 		//对于double类型的数据装换为string类型进行字符串截取 只取整数。
					 		cell1=cell1.substring(0, cell1.length()-2);//2
					 		String cell2=this.publicExcel(childSheet.getRow(rowi).getCell(1));//111
					 		String cell3=this.publicExcel(childSheet.getRow(rowi).getCell(2));//422
					 		//拼装插入数据库的sql	
					 		String insert="insert into pt_zt values('"+cell3+"','"+cell2+"','"+cell1+"')";
					 		System.out.println("SQL:"+insert);
					 		insert(insert);
					 		
					 	}	
				}
			}
	}

		/**
		 * execl数据格式的转换
		 * @param cell
		 * @return String
		 */
		public String publicExcel( HSSFCell cell){
			String value = null;		
			      switch (cell.getCellType()) {
			      case HSSFCell.CELL_TYPE_NUMERIC:
			       value = "" + cell.getNumericCellValue();
			       break;
			      case HSSFCell.CELL_TYPE_STRING:
			       value = cell.getStringCellValue();
			       break;
			      case HSSFCell.CELL_TYPE_BLANK:
			       ;
			       break;
			      default: 
				}
			return value;
		}
		
		
		/**
		 * 插入数据 只需要传入插入sql即可
		 * 插入sql的样例:insert into pt_zt values('sys_users','用户表');
		 * @param insert 插入语句
		 * @return int
		 * @throws SQLException 
		 */
		public int insert(String insert) throws SQLException{
			Connection conn = this.conn();
			int re = 0;
			try{
				conn.setAutoCommit(false);//事物开始				
				Statement sm = conn.createStatement();
				re = sm.executeUpdate(insert);//执行
				if(re < 0){               //插入失败
					conn.rollback();      //回滚
					sm.close();			//关闭sm										
					conn.close();    //关闭连接
					return re;
				}
				conn.commit();            //插入提交正常
				System.out.println("一条已插入正常,sql="+insert);
				sm.close();
				conn.close();  
				return re;
			}
			catch(Exception e){
				e.printStackTrace();
			}
			conn.close();  
			return 0;
			
		} 

}

                   

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载

                   

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

0

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

0

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

0

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

0

2026.10.10

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

0

2026.10.10

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

0

2026.10.10

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

0

2026.10.10

C++条件判断语句怎么写
C++条件判断语句怎么写

C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

0

2026.10.10

C++变量怎么声明和赋值
C++变量怎么声明和赋值

C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

0

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn