一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现

须要导入一个第三方包下载地址

详细内容例如以下:

里面含有指导文档,index.html里面含有怎样读取数据库文件到excel和excel数据到数据库中。

主要用到一个包

将这个包复制到项目里面就能够了。

先做一个简单版本号的helloword

<span style="white-space:pre">	</span>public void mkexcel() throws Exception{
//首先在内存中建立好工作薄
HSSFWorkbook book =new HSSFWorkbook();//建立好工作薄
HSSFSheet sheet = book.createSheet("表一");//表单名以及表单
HSSFRow row=sheet.createRow(4);//创建行数
HSSFCell cell=row.createCell(4);//创建列数
cell.setCellValue("大哥哥。加油!! ");//将数据写到cell中去
//内存中建立可不行。必需要写到文件
FileOutputStream out =new FileOutputStream("a.xls");
book.write(out);
}

效果图:

通过上面的简单实例,我们能发现,创建xls的文件类似于在网页中动态创建table表格类似点击打开链接

1。建立工作薄

2,薄建立表

3。表建行

4。行建列

5,列里面设值



有了上面的这个简单的介绍,如今開始导入数据库里面的内容

1,我们必须从内存中建立工作薄

<span style="font-size:18px; white-space: pre;">	</span><span style="font-size:24px;">HSSFWorkbook book =new HSSFWorkbook();</span>

2,创建sheet的时候。我们须要指定sheet名,全部须要用到元数据得到database里面的table名

Connection con =hibernateFactory2.getCon();//数据库连接成功

DatabaseMetaData dmeta=con.getMetaData();//元数据


<span style="font-size:24px;">ResultSet rs=dmeta.getCatalogs();//获得全部的数据库,可是为了方便。我们直接指定数据库名</span>

3。获得table名。

<span style="white-space:pre">		</span>String dName="hncu";
//获得数据库里面的表名,返回ResultSet 所有放在list中
ResultSet rs= dmeta.getTables(dName, dName, null, new String[]{"TABLE"});
//放在list 中,为后面的sheet名
List<String > list =new ArrayList<String>();
while(rs.next())
{
<span style="white-space: pre;"> </span>list.add(rs.getString("TABLE_NAME"));//找出表名将其放入list 中
}

4,開始建立sheet表单。同一时候採用元素据生成表头

<span style="white-space:pre">	<span style="font-size:24px;">		</span></span><span style="font-size:24px;">for(String sheetname:list){
HSSFSheet sheet=book.createSheet(sheetname);//设置表单和表单名
String sql="select * from "+dName+"."+sheetname;//以数据库的名字.表名来获取
Statement st =con.createStatement();
ResultSet rs2=st.executeQuery(sql);
ResultSetMetaData rsmd=rs2.getMetaData();
int col =rsmd.getColumnCount();//获得有多少列 //生成表单的第一行,表头
HSSFRow row0 =sheet.createRow(0);
for(int i=0;i<col;i++){
HSSFCell cell = row0.createCell(i);
cell.setCellValue(rsmd.getColumnName(i+1));
}</span>

5,创建行和列以及设置行列的值

<span style="white-space:pre">			</span>int idx=1;//用来生成行
//第一头部分完毕 //完毕第二部分
while(rs2.next()){
HSSFRow row =sheet.createRow(idx++);//一行创建完毕。開始创建列
for(int i =0 ;i<col;i++){
HSSFCell cell =row.createCell(i);
cell.setCellValue(rs2.getString(i+1));
}
}
}

6,存到文件

	<span style="white-space:pre">	</span><span style="font-size:24px;">FileOutputStream out =new FileOutputStream("db.xls");
<span style="white-space:pre"> </span> book.write(out);//採用book来进行写</span>

能直接执行的代码

public void Test3() throws Exception{
/*
* 要先得到数据库里面的数据。我们必须採用元数据,获得想关的内容
* 要是直接执行,须要导包 建立数据库,查看的生成后文件在和根文件夹src同级
*/ //先从内存中的数据建立
HSSFWorkbook book =new HSSFWorkbook();
Connection con =hibernateFactory2.getCon();//数据库连接
DatabaseMetaData dmeta=con.getMetaData();//元素据
// ResultSet rs=dmeta.getCatalogs();//获得所有的数据库
String dName="hncu";
//获得数据库里面的表名,返回ResultSet 所有放在list中
ResultSet rs= dmeta.getTables(dName, dName, null, new String[]{"TABLE"});
//放在list 中,为后面的sheet名
List<String > list =new ArrayList<String>();
while(rs.next())
{
list.add(rs.getString("TABLE_NAME"));//找出表名将其放入list 中
}
for(String sheetname:list){
HSSFSheet sheet=book.createSheet(sheetname);//设置表单和表单名
String sql="select * from "+dName+"."+sheetname;//以数据库的名字.表名来获取
Statement st =con.createStatement();
ResultSet rs2=st.executeQuery(sql);
ResultSetMetaData rsmd=rs2.getMetaData();
int col =rsmd.getColumnCount();//获得有多少列 //生成表单的第一行
HSSFRow row0 =sheet.createRow(0);
for(int i=0;i<col;i++){
HSSFCell cell = row0.createCell(i);
cell.setCellValue(rsmd.getColumnName(i+1));
}
int idx=1;
//第一头部分完毕 //完毕第二部分
while(rs2.next()){
HSSFRow row =sheet.createRow(idx++);//一行创建完毕。開始创建列
for(int i =0 ;i<col;i++){
HSSFCell cell =row.createCell(i);
cell.setCellValue(rs2.getString(i+1));
}
}
}
FileOutputStream out =new FileOutputStream("db.xls");
book.write(out);

就这样就将数据所有导入到excel里面了

效果图:

数据库中的数据

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

导出的excel的数据



可以全然导出来,可是在实验的时候。数据库类型为blob类型的不能导出,由于excel 的每一个单元格的数据不支持那么大的。

有什么问题,大家一起提出来,共同讨论下。谢谢

Java将数据库数据导入EXCEL的更多相关文章

  1. JAVA实现数据库数据导入/导出到Excel(POI)

    准备工作: 1.导入POI包:POI下载地址http://mirrors.tuna.tsinghua.edu.cn/apache/poi/release/src/(重要) 如下 2.导入Java界面美 ...

  2. java数据库数据导入excel

    data导出入excel中 controller: package com.longfor.hrssc.api.controller; import com.longfor.hrssc.api.mod ...

  3. ASP.NET中数据库数据导入Excel并打印(2)

    大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的.如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:      Private Sub Page_L ...

  4. 在java中实现数据导入excel表格中

    1.首先前端代码如下: 一个导出按钮:<input id="export" class="btn btn-primary" type="butt ...

  5. PHP把数据库数据导入Excel

    <?php function xlsBOF() { echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); return; ...

  6. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  7. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  8. Java实现大批量数据导入导出(100W以上) -(三)超过25列Excel导出

    前面一篇文章介绍大数据量导出实现: Java实现大批量数据导入导出(100W以上) -(二)导出 这篇文章在Excel列较少时,按以上实际验证能很快实现生成.但如果列较多时用StringTemplat ...

  9. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

随机推荐

  1. bind原理图释

    (原文:http://blog.think-async.com/2010/04/bind-illustrated.html) 本文解释了bind 是如何工作的.为了清晰,我对图中的语法作了一些简化(例 ...

  2. operator++()和operator++(int)的区别

    很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用.这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式. 然而有一个 ...

  3. Cognos与Firefox的那些事

    最近怀着一颗好奇的心装了Win10系统,作为一个Coder,或多或少的这么久以来对于它的兼容性还是秉着一颗质疑的态度.但是一切事情都要敢于尝试,毕竟Win10的用户体验还是很好的.和预料的一样,问题马 ...

  4. (转)Unity3D占用内存太大的解决方法

    自:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大.  ...

  5. 【Java VisualVM】使用 VisualVM 进行性能分析及调优

    转载:https://blog.csdn.net/lmb55/article/details/79267277 一.概述 开发大型 Java 应用程序的过程中难免遇到内存泄露.性能瓶颈等问题,比如文件 ...

  6. C#.NET常见问题(FAQ)-程序如何单步调试和设置断点

    对于控制台程序而言,直接按F10(不按F5运行)就可以单步运行,当前运行行会显示为黄色(不管是一条语句,还是一个函数,都会直接执行完毕得到结果)   你可以在变量名上右击添加监视(会自动放到监视1中) ...

  7. 自定义Lisp透明命令

    我们知道在CAD中,如果我们在命令前面加一个单引号,则为透明命令.透明命令就是一个命令还没结束,中间插入另一个命令,然后继续完成前一个命令.插入的命令即透明命令,插入透明命令是为了更方便的完成第一个命 ...

  8. @QueryParam和@PathParam使用方法比较

    1 先来看@queryparam Path("/users") public class UserService { @GET @Path("/query") ...

  9. ORACLE NVL 和 NVL2 函数的使用

    NVL函数是一个空值转换函数,在SQL查询中主要用来处理null值.在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值. Oracle在 ...

  10. Laravel.log日志超级大!怎么办!

    备份项目,发现下载好久没有下载下来.提了网速还是下载了45分钟 解压,解压了25分钟. 想着以为是附件太多... 进入了upload发现也就几百兆. 想看里面内容又打不开...  Laravel 的日 ...