用POI将Mysql数据导入到Excel中去
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用POI将Mysql数据导入到Excel中去相关的知识,希望对你有一定的参考价值。
参考技术A在我们实际的开发中 表现层的解决方案虽然有多样 但是IE浏览器已成为最多人使用的浏览器 因为大家都用Windows 在企业办公系统中 常常有客户这样子要求 你要把我们的报表直接用Excel打开 或者是 我们已经习惯用Excel打印 这样子如果开发是没有问题的用来进行这些数据导入导出支持的都是很好 如果你使用的是SQL Server数据库那就更方便了 笔者也曾体会开发这些功能的方便性 但是有j ee这个更有前途的开放式的开发环境 难道我为了解决打印的要求去另写客户端的控件?或者在服务器端使用本地代码?第一种方案的问题是关键数据的处理有时候不能在客户端做 第 种方案的问题是牺牲了代码的可移植性和稳定性 如果让客户端只负责处理生成好的报表 那将是一种诱人的选择
Apache的Jakata项目的POI子项目 目标是处理ole 对象 目前比较成熟的是HSSF接口 处理MS Excel( )对象 它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西 而是真正的Excel对象 你可以控制一些属性如sheet cell等等 这是一个年轻的项目 所以象HDF这样直接支持Word对象的好东西仍然在设计中 其它支持word格式的纯java方案还有itext 不过也是仍在奋斗中 但是HSSF已经成熟到能够和足够我们使用了 另外 无锡永中Office的实现方案也是纯java的解决方案 不过那也是完全商业的产品 并不是公开代码项目 其实 从开发历史的角度讲 在 年代中期starOffice的原作者在德国成立了StarOffice suite公司 然后到 年夏天starOffice被sun收购 再到 年 月starOffice 的发布 并且从starOffice 开始 starOffice建立在OpenOffice的api的基础上 这个公开代码的office项目已经进行了很长的时间 虽然那是由C++写的 但是POI的代码部分也是由openOffice改过来的 所以 应该对POI充满足够的信心 国内已经有部分公司在他们的办公自动化等Web项目中使用poi了 如日恒的ioffice 海泰的HTOffice等
java当初把核心处理设成Unicode 带来的好处是另代码适应了多语言环境 然而由于老外的英语只有 个字母 有些情况下 一些程序员用 位的byte处理 一不小心就去掉了CJK的高位 或者是由于习惯在程序中采用硬编码 还有多种原因 使得许多java应用在CJK的处理上很烦恼 还好在POI HSSF中考虑到这个问题 可以设置encoding为双字节
POI可以到下载到 编译好的jar主要有这样 个 poi包 poi Browser包 poi hdf包 poi hssf例程包 实际运行时 需要有poi包就可以了 如果用Jakarta ant编译和运行 下载apache Jakarta POI的release中的src包 它里面已经为你生成好了build文件了 只要运行ant就可以了(ant 的安装和使用在此不说了) 如果是用Jbuilder 运行 请在新建的项目中加入poi包 以Jbuilder 为例 选择Tools菜单项的config libraries 选项 新建一个lib 在弹出的菜单中选择poi包 如这个jakarta poi final jar 把poi添加到jbuilder中 然后 右键点击你的项目 在project的properties菜单中path的required Libraries中 点add 添加刚才加入到jbuilder中的poi到你现在的项目中 如果你仅仅是为了熟悉POI hssf的使用 可以直接看POI的samples包中的源代码 并且运行它 hssf的各种对象都有例程的介绍 hssf提供的例程在 apache poi hssf usermodel examples包中 共有 个 生成的目标xls都是workbook xls 如果你想看更多的例程 可以参考hssf的Junit test cases 在poi的包的源代码中有 hssf都有测试代码
首先 到上去下载POI 登录到该网址以后 选择红 *** 域的poi bin final zip来下载
下载以后解压 解压目录为
在Eclipse中设置对poi bin final jar的库引用
在Eclipse中新建一个名字叫POIExcel的Java工程 右键POIExcel项目的项目名 选择Build Path 再选择Add External Archives 然后找到poi bin final jar这个包将其引进到工程中来
Excel 结构 HSSFWorkbook excell 文档对象介绍 HSSFSheet excell的表单 HSSFRow excell的行 HSSFCell excell的格子单元 HSSFFont excell字体 HSSFName 名称 HSSFDataFormat 日期格式 辅助操作包括 HSSFDateUtil 日期 HSSFPrintSetup 打印 HSSFErrorConstants 错误信息表
将数据导出到Excel中的实例
创建一个空白的Excel文件
我们创建一个最普通的Java应用程序即可 程序代码如下: HSSFWorkbook wb=new HSSFWorkbook(); FileOutputStream fileout = new FileOutputStream( C:\\\\test xls ); wb write(fileout); fileout close();
FileOutputStream属于JDK的数据流对象 通过它来将一个名为test xls文件创建在C盘根目录下 运行该程序后可以看到在C盘上的根目录上多了一个Excel文件
如果将程序中的FileOutputStream( C:\\\\test xls )的参数改为 test xls 则文件就会创建在该项目的根目录下
往Excel的单元格中写入信息
POI把Excel分解成几个对象 自顶向下的关系是:工作薄(HSSFWorkbook) >表格(HSSFSheet) >表格行(HSSFRow) >单元格(HSSFCell) 将数据库中表的数据导入到Excel中 首先我们要将数据库中的表的数据查询出来 这里我们通过Hibernate来将数据库中addres *** ook_table表的数据查询出来 然后通过循环将表中的数据导入到Excel中去
HSSFWorkbook wb=new HSSFWorkbook(); HSSFSheet sheet=wb createSheet( new sheet ); try //通过Hibernate来查询addres *** ook_table表中的数据 将其存储在List中 Transaction tx = session beginTransaction(); hibernate Query query= session createQuery( from Addres *** ookTable ); List list = query list(); mit(); int k = ; //创建表格 创建表格行和单元格 将数据库中表的字段存储在单元格中 for(Iterator it=erator();it hasNext();) Addres *** ookTable user =(Addres *** ookTable)it next(); HSSFRow row=sheet createRow((short)k); row createCell((short) ) setCellValue(user getId()); row createCell((short) ) setCellValue(user getName()); row createCell((short) ) setCellValue(user getAddress()); row createCell((short) ) setCellValue(user getPhone()); k++; FileOutputStream fileout = new FileOutputStream( C:\\\\test xls ); wb write(fileout); fileout close(); log error( Successful!! ); catch (HibernateException e) log error( Insert Exception! ); e printStackTrace();
lishixinzhi/Article/program/Oracle/201311/17278
如何将一个Excel表中有用的数据导入到另一个表中去?
比如说第一个表中有基站、区域、经度、纬度等,第二个表汇总只需要经度喝纬度,怎么一次性导入进去
感谢你们的回答,但是我想知道怎么一次性把所有数据导入进去,我试过vloolup和其他方法,但还是太麻烦,可以用VBA或者其他方法么?
1、首先打开你的数据表格。
2、然后选择数据源,选择直接打开数据文件,选择数据源。
3、然后找到要出入的数据表格,点击打开。
4、返回到刚才的选择数据源页面,点击下一步。
5、点击如下的按钮,把字段全部选到右侧,进行导入。选择下一步。
6、然后选择一个导入的位置,点击确定,数据就导入完成了。
参考技术A第一种方法:
假设第一个表为sheet1,第二个表为sheet2:
在sheet2中点击需要显示sheet1数据的单元格;
2.点击主菜单下面的“fx-插入函数-确定”,再点击相应的sheet1数据单元格按“确定”,这样就定义好了一个单元格的导入数据;
3.再用以上方法导入第二个数据就行了。。
第二种方法:
用vlookup函数
例如表一、表二,将表一数据自动生成到表二。
条件是:你要生成在表二中的数据最上面的项目名称要与表一相同。
=VLOOKUP($A1,表一!$A$2:$X$3231,8,FALSE)
$A1表示:表二中要与表一中核对的数据。(表一和表二中的A列格式必须一样)
表一!$A$2:$X$3231表示:在数据区域,也就是以表二中单元格$A1数据为基础,在表一的这个区域($A$2:$X$3231)找和表二中单元格$A1里数据一样的。 表示:用表二中数据找到表一中数据时,自动将与表二$A1单元格数据对应的第8列中的数据生成过来。
FALSE表示:绝对匹配!
这样就行了,只要你能做好一个,其他的用填充。
您好1、首先打开一个Excel表格,数据点击数据下方的空白单元格,在页面上方可以看到表格的功能栏,在功能栏中点击数据选项;2、点击数据后,在下方会出现很多选项,选择其中的导入数据选项,在导入数据选项框中点击数据源;3、选择另一文件所保存的路径,点击你要想要导入的文件,点击确认,确认后点击下一步,然后点击完成,页面会显示数据放在当前表格的哪个位置,点击确定即可,确认后两个表格的数据就导入到一起了
提问我想要把另外一个表格中的人员数据导入到另外一个表格中相应人员的信息那里。
回答整体复制粘贴就可以
参考技术C 回答打开excel,全选中所有表格内容,ctrl+c复制出来,点击表格下方的sheet1旁的加号,添加sheet2表格,再将复制好的表格内容ctrl+V粘贴进sheet2表格即可。
或者您直接全选中表格内容,创建新表格,再粘贴进来也是可以的
我们都是用粘贴复制的呢
参考技术D 假设第一个表为sheet1,第二个表为sheet2:1.在sheet2中点击需要显示sheet1数据的单元格;
2.点击主菜单下面的“fx-插入函数-确定”,再点击相应的sheet1数据单元格按“确定”,这样就定义好了一个单元格的导入数据;
3.再用以上方法导入第二个数据就行了。。。
以上是关于用POI将Mysql数据导入到Excel中去的主要内容,如果未能解决你的问题,请参考以下文章
java用poi实现将数据库里面的数据导入已经存在的excel模板中。最好有实例参考,谢谢。
用javascript怎么实现把excel中的数据批量导入到数据库表中