java poi excel 导入数据库_java POI 处理excel表格数据并导入数据库示例

java操作Excel最常用的开源组件有poi与jxl。jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007。 poi是apache下的一个子项目,poi应该是处理ms的office系列文档最好的组件了。poi3.7版本已经开始支持excel2007了。所以这里我们选择poi作为开发工具。

*

* java读取excel文件

*

* 一个Excel文件的层次:Excel文件->工作表->行->单元格 对应到POI中,为:workbook->sheet->row->cell

*

*/

public class PoiExcel {

public static String outputFile = "E:/users.xls";

//public static String fileToBeRead = "E:/蒋和杰.xls";

static String createTableSql="";//创建数据库的sql

static String colType="TEXT";//字段类型

static String key="id";//主键

static String charSet="utf8";//表格字符类型

static String ENGINE="InnoDB";//表格类型

static String tableName="tempExcelToMysql";//表名称

static String colName="col";//默认字段名

static Connection conn = null;

/* 数据库连接*/static void getConntion(){

try {

String driver_class = "com.mysql.jdbc.Driver";

String connection_url = "jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEncoding=gb2312";

String user_name = "username";

String db_password = "password";

Class.forName(driver_class);

conn = DriverManager.getConnection(connection_url, user_name,db_password);

}catch(Exception e){

e.printStackTrace();

}

}

public void CreateExcel() {

try {

// 创建新的Excel 工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名为缺省值

// 如要新建一名为"效益指标"的工作表,其语句为:

// HSSFSheet sheet = workbook.createSheet("效益指标");

HSSFSheet sheet = workbook.createSheet();

// 在索引0的位置创建行(最顶端的行)

HSSFRow row = sheet.createRow((short) 0);

//在索引0的位置创建单元格(左上端)

HSSFCell cell = row.createCell((short) 0);

// 定义单元格为字符串类型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在单元格中输入一些内容

cell.setCellValue("sweater");

// 新建一输出文件流

FileOutputStream fOut = new FileOutputStream(outputFile);

// 把相应的Excel 工作簿存盘

workbook.write(fOut);

fOut.flush();

// 操作结束,关闭文件

fOut.close();

System.out.println("文件生成...");

} catch (Exception e) {

System.out.println("已运行 xlCreate() : " + e);

}

}

/**

*

* 读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示

* 注意: 1.sheet, 以0开始,以workbook.getNumberOfSheets()-1结束 2.row,

* 以0开始(getFirstRowNum),以getLastRowNum结束 3.cell,

* 以0开始(getFirstCellNum),以getLastCellNum结束, 结束的数目不知什么原因与显示的长度不同,可能会偏长

*

*/

public void readExcel(String fileToBeRead,String addacct) {

//将被表示成1.3922433397E10的手机号转化为13922433397,不一定是最好的转换方法

DecimalFormat df = new DecimalFormat("#");

try {

// 创建对Excel工作簿文件的引用

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {

if (null != workbook.getSheetAt(numSheets)) {

HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet

for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {

System.out.print("行"+rowNumOfSheet);//其它格式的数据

if (null != aSheet.getRow(rowNumOfSheet)) {

HSSFRow aRow = aSheet.getRow(rowNumOfSheet);

ArrayList recode=new ArrayList();

for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {

if (null != aRow.getCell(cellNumOfRow)) {

HSSFCell aCell = aRow.getCell(cellNumOfRow);

int cellType = aCell.getCellType();

switch (cellType) {

case 0://Numeric

String strCell = df.format(aCell .getNumericCellValue());

System.out.print(strCell);

recode.add(strCell);

break;

case 1://String

strCell = aCell.getStringCellValue();

System.out.print(strCell);

recode.add(strCell);

break;

default:

System.out.println("格式不对不读");//其它格式的数据

}

}

} //end of 遍历所有数据项结束

getConntion();

String sql="insert into tab_student_info (member_no,member_name,sex," +

"contact_mobile,province_no,city_no,county_no," +

"village_no,address,status,oper_date," +

"oper_code,oper_type,domain_no,att1,"+

"values("+0+",'"+recode.get(0)+"',"+0+",'"+ recode.get(1) +"',"+ 1 +"," + 1 +","+ 1 +","+ 1 +",'"+ recode.get(2) +"'," +

1+","+"now()"+",'"+addacct+"',"+2+","+1+"," +0+","+

")";

System.out.println(sql);

statement = conn.createStatement();

statement.executeUpdate(sql);

//conn.commit();

} //end of if (null != aSheet.getRow(rowNumOfSheet))

System.out.println("");

} //end of for 遍历所有行结束

}

} //end of for 遍历所有sheet结束

} catch (Exception e) {

System.out.println("ReadExcelError" + e);

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fly.Box天禾云盘2016双11超级钜惠,超低折扣!!!

Fly.Box企业网盘2016双十一超级钜惠&#xff0c;超低折扣&#xff0c;超多优惠 凡在2016年11月1日至2016年11月11日期间下单的客户&#xff0c;均可享受5折优惠&#xff0c;终身免费升级&#xff0c;免费服务。推荐即可获2折返现&#xff0c;老用户推荐更可享受8折的折上折优惠…

python组合数据类型实验_实验七 组合数据类型

安徽工程大学Python程序设计实验报告班级物流192 姓名 徐敏 学号 3190505232 成绩 _____日期 2020.5.28 指导老师 修宇实验七 组合数据类型【实验目的】熟悉通过序列索引迭代执行循环&#xff1b;掌握元组、列表与字典的系列操作函数及相关方法【实验条件】PC机或者远程编程…

wcf获取MySQL中午乱码,如何启用WCF日志记录,以便它写入数据库?

Id like to be able to log message information in a database, and Im trying to decide how best to do that. Is it possible to configure the WCF logging mechanisms to write to a database instead of a file? Thanks.解决方案You need to have two things:a proper …

mysql的limit、order by和group by的用法

程序执行会重复 用mysql很长时间&#xff0c;limit是分页的一个好工具&#xff0c; select * from table_a where num 4 limit 1&#xff0c;10, select * from table_a where num 4 limit 10&#xff0c;10, 今天突然发现有些数据怎么也不会出来 也就是说第一页的数据会重复…

挑战61年未被质疑的经典心理学理论—— 大脑识别图像并非“趣味导向”

来源&#xff1a;科技日报科技日报讯 &#xff08;实习生张临谦 记者房琳琳&#xff09;据物理学家组织网最新报道&#xff0c;加拿大约克大学的视觉研究者近日对多种视觉图像处理算法进行了测试&#xff0c;并经特定实验发现&#xff0c;人脑并不会优先处理图像中的有趣区域&a…

销售管理系统 java_用Java从零写一个B2C商城,看完不要再说自己没有实战经验了!...

一、B2C商城实战需要哪些技术点要想立足于互联网公司&#xff0c;且能在互联网浪潮中不被淹没&#xff0c;对于项目的开发实战演练是不必可少的技能&#xff0c;也是对自身能力的一个衡量&#xff0c;有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱&#xff0c;其…

行业|又一家明星机器人公司倒掉:曾是全球机器人技术50强,主打性价比AI机械臂...

来源&#xff1a;机器人大讲堂 又一家曾经光芒四射的机器人公司&#xff0c;倒闭了。成立于2014年&#xff0c;仅2年就入选《机器人商业评论》年度权威榜单RBR50 2016&#xff0c;成为机器人技术的全球50强。当时一同上榜的多是巨头&#xff0c;有ABB、发那科、大疆&#xff0c…

java生成flash_针对 Flash 开发者的最新 Capuchin 计划资源

开发者世界 Capuchin 计划站点在经过改版后,拥有任何Flash™ 开发者所需要的一切,现在无需了解Java™ ME&#xff0c;就能构建引人入胜的 Capuchin 计划应用程序。在你能找到由 Capuchin 计划工具包支持的最新索尼爱立信 Service MXPs&#xff0c;以及针对 Flash 开发者的两份最…

js实现svg图形转存为图片下载

我们知道canvas画布可以很方便的js原生支持转为图片格式并下载&#xff0c;但是svg矢量图形则并没有这方面原生的支持。研究过HighChart的svg图形的图片下载机制&#xff0c;其实现原理大体是浏览器端收集SVG代码信息&#xff0c;并发送到到服务器端&#xff0c;由后端程序转换…

视图插入数据_用EXCEL作数据分析--招聘信息

前提数据分析职位在哪些城市最多&#xff1f;数据分析师的工资水平怎么样&#xff1f;做数据分析师对学历专业要求怎么样&#xff1f;一、字段信息城市职位名称职位类型公司名称公司规模学历要求所属领域薪资工作年限要求数据预览二、数据清洗首先插入表格&#xff0c;这样后续…

从全球最赚钱的20家公司,我们可以发现什么?

来源&#xff1a;资本实验室在商业的版图中&#xff0c;更少的公司贡献着更多的利润&#xff0c;这已经是一个不争的事实。而在目前&#xff0c;这种现象正在加剧&#xff1a;更多的利润越来越向更少的公司集中。例如&#xff0c;在1975年&#xff0c;美国上市公司共4819家&…

python ftp上传_Python FTP传输的简单示例

对python这个高级语言感兴趣的小伙伴&#xff0c;下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧&#xff01;访问FTP&#xff0c;无非两件事情&#xff1a;upload和download&#xff0c;最近在项目中需要从ftp下载大量文件&#xff0c;然后我就试着去实验自己的ftp操作类&…

NASA:首批“太空蜜蜂”将赴空间站上班,助宇航员推进研究!

来源&#xff1a;机器人大讲堂2006年&#xff0c;美国宇航局&#xff08;NASA&#xff09;将三个可自由飞行的小型机器人送上国际空间站。这些名为SPHERES &#xff08;同步位置的保持、连通与再定向试验卫星&#xff09;的机器人在太空进行了长达600个小时的实验&#xff0c;开…

k米案例分析

K米产品分析 第一部分 调研、评测 评测 上手体验 大一暑假的时候&#xff0c;在ktv和同学唱k的时候就接触过了。 - -、所以对于k米的第一次上手体验已经不记得了&#xff08;ps&#xff1a;尴尬&#xff09;&#xff01;~其实以前用它的时候想法很简单&#xff0c;不用到点歌台…

java消息对话框用什么做_Java如何创建消息对话框?

本示例演示如何使用JOptionPane类方法创建消息对话框。在下面的代码&#xff0c;你会看到使用的JOptionPane.showMessageDialog()&#xff0c;JOptionPane.showInputDialog()和JOptionPane.showConfirmDialog()。package org.nhooo.example.swing;import javax.swing.*;import …

python教程app 小米应用商店_一篇文章教会你用Python多线程获取小米应用商店App...

【一、项目背景】小米应用商店给用户发现最好的安卓应用和游戏,安全可靠&#xff0c;可是要下载东西要一个一个的搜索太麻烦了。而已速度不是很快。今天用多线程爬取小米应用商店的游戏模块。快速获取。【二、项目目标】目标 &#xff1a;应用分类 - 聊天社交 应用名称&#xf…

传感器发展历史,你知道吗?(图文并茂)

来源&#xff1a;北京物联网智能技术应用协会传感器与通信、计算机被称为现代信息技术的三大支柱和物联网基础&#xff0c;其应用涉及国民经济及国防科研的各个领域&#xff0c;是国民经济基础性、战略性产业之一。当前倍受国际关注的物联网、大数据、云计算技术&#xff0c;乃…

mysql 优化not null_mysql 优化之11:尽可能的使用 NOT NULL

除非你有一个很特别的原因去使用 NULL 值&#xff0c;你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议&#xff0c;请往下看。首先&#xff0c;问问你自己“Empty”和“NULL”有多大的区别(如果是INT&#xff0c;那就是0和NULL)&#xff1f;如果你觉得它们之间没有什…

python第六章函数课后答案_浙大PTA-Python题库 函数题(6-1~6-6)题解

其他各章题解链接如下浙大PTA-Python题库 编程题第一章(1-1~1-3)题解https://blog.csdn.net/zimuzi2019/article/details/107020657浙大PTA-Python题库编程题 第二章(2.1~2.14)题解https://blog.csdn.net/zimuzi2019/article/details/106984549浙大PTA-Python题库 编程题第三章…

我们为什么不能只相信建立在深度学习基础上的人工智能系统

来源&#xff1a;简书本文摘自&#xff1a;https://www.jianshu.com/p/55e1abcd896dGary Marcus介绍了如何实现通用智能以及为什么通用智能可能会让机器更安全。加里•马库斯(Gary Marcus)对深度学习的大肆宣传并不感冒。尽管这位纽约大学教授认为&#xff0c;这项技术在推进人…