poi方式操作excel表格数据(数据库查询到的数据导入excel文件)
2013-04-28 09:13
891 查看
通过java,要将数据写入到excel文件,有两种比较简单的方式可以选择。
1.一种是POI方式。
2.一种是JXl方式。
于是,我选择了POI方式,按照POI的方式,一天的时间将任务完美的完成了。
完成任务后,我自己又总结了一下,这是我自己学习总结的例子,接下来我会将我的感受和完整代码分享给大家。
我会分别介绍POI和jxl方式。
一。使用POI操作excel.
目标:将Oracle数据库查询到的大量数据导入excel文件。
1.使用此方式,首先需要下载poi-2.5.1.jar文件。这个官网有提供。
2.将poi-2.5.1.jar导入工程。
3.接下来就可以放心写你的Java代码就可以了。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201304/56c29bb9adbcf00ece9fb192c61891d8.png)
<pre name="code" class="java">import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import common.Utils;
public class ToExcel {
/**
* poi方式
* @author xulx
*/
public void poiToExcel() {
FileOutputStream fout = null;
try {
fout = new FileOutputStream(new File("file/data.xls"));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
// 创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 由工作簿创建工作表
HSSFSheet sheet = workbook.createSheet();
// 创建行
HSSFRow row = null;
row = sheet.createRow(0);
// 创建单元格,设置每个单元格的值(作为表头)
HSSFCell cell = null;
cell = row.createCell(0);
cell.setCellValue("编号");
cell = row.createCell(1);
cell.setCellValue("姓名");
cell = row.createCell(2);
cell.setCellValue("出生年月");
// totalList存放的是一条条完整的记录
List totalList = Utils.getAllDatas();
// list存放的是每一条记录的所有列
List l = null;
if (totalList != null) {
for (int i = 0; i < totalList.size(); i++) {
l = (List) totalList.get(i);
row = sheet.createRow(i + 1);
for (int j = 0; j < l.size(); j++) {
cell = row.createCell(j);
cell.setCellValue(l.get(j).toString());
}
}
}
try {
workbook.write(fout);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* poi控制单元格样式
*/
public void setCellStyle() {
FileOutputStream out = null;
try {
out = new FileOutputStream(new File("file/data2.xls"));
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("hello");
// 创建HSSFCellStyle对象
HSSFCellStyle style = workbook.createCellStyle();
// 设置此样式(样式属性)
style.setFillBackgroundColor(HSSFColor.BLUE.index2);
workbook.write(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
*
* PIO设置日期格式
*/
public void setDateFormat() {
FileOutputStream fout = null;
try {
fout = new FileOutputStream(new File("file/data3.xls"));
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(new Date());
// 设置一种数据格式
HSSFCellStyle cellstyle = workbook.createCellStyle();
cellstyle.setDataFormat(HSSFDataFormat
.getBuiltinFormat("m/d/yy h:mm"));
// 设置此单元格日期样式
cell.setCellStyle(cellstyle);
workbook.write(fout);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}</pre>
总结:我们耐心看我的代码之后,我想你肯定就豁然明白了。
其实大家看到,使用poi方式将数据写入excel的步骤就是这样的。(完全按照我们打开一个.xls文件,写入内容的步骤 来操作即可)
1.首先创建excel工作簿。
2.在这个工作簿上创建工作表
3.在这个工作表中创建行。
4.每一行添加单元格,每一个单元格加入值就可以了。
综上所述,我的代码部分也写了详细的注释,大家应该很容易看明白的。方法poiToExcel()就可以成功的将从数据库查询到的数据写入excel文件了。
如果读者还需要设置一些额外的东西,例如excel的样式,那么我们使用HSSFCell类即可。如上的方法setCellStyle()即简单的设置了一下样式。(当然,因为我的主管给我安排的任务并没有要求设置样式,所以,并没有去设置太多东西),还有就是一个关于日期的设置,也是比较繁琐的,通过上述的方法setDateFormat()可以让日期正确的显示在excel中。
下面是我查询数据用到的Utils,也供大家参考。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201304/56c29bb9adbcf00ece9fb192c61891d8.png)
package common;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Utils {
/**
* 查询表test中的所有数据,将返回的数据全部放入List集合
* @return
*/
public static List getAllDatas(){
List totalList=new ArrayList();
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
conn=ConnectionFactory.getOracleConnection();
String sql="select id ,name,birthday from test";
try {
stm=conn.createStatement();
rs=stm.executeQuery(sql);
List list=null;
while(rs.next()){
list=new ArrayList();
list.add(rs.getObject(1));
list.add(rs.getObject(2));
list.add(rs.getObject(3));
totalList.add(list);
}
} catch (SQLException e) {
e.printStackTrace();
}
return totalList;
}
}
二。使用jxl方式操作excel文件。
感觉写在一起太长了,这个部分请读者查阅我的下一篇<<jxl操作excel文件>>.(*^__^*)
1.一种是POI方式。
2.一种是JXl方式。
于是,我选择了POI方式,按照POI的方式,一天的时间将任务完美的完成了。
完成任务后,我自己又总结了一下,这是我自己学习总结的例子,接下来我会将我的感受和完整代码分享给大家。
我会分别介绍POI和jxl方式。
一。使用POI操作excel.
目标:将Oracle数据库查询到的大量数据导入excel文件。
1.使用此方式,首先需要下载poi-2.5.1.jar文件。这个官网有提供。
2.将poi-2.5.1.jar导入工程。
3.接下来就可以放心写你的Java代码就可以了。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201304/56c29bb9adbcf00ece9fb192c61891d8.png)
<pre name="code" class="java">import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import common.Utils;
public class ToExcel {
/**
* poi方式
* @author xulx
*/
public void poiToExcel() {
FileOutputStream fout = null;
try {
fout = new FileOutputStream(new File("file/data.xls"));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
// 创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 由工作簿创建工作表
HSSFSheet sheet = workbook.createSheet();
// 创建行
HSSFRow row = null;
row = sheet.createRow(0);
// 创建单元格,设置每个单元格的值(作为表头)
HSSFCell cell = null;
cell = row.createCell(0);
cell.setCellValue("编号");
cell = row.createCell(1);
cell.setCellValue("姓名");
cell = row.createCell(2);
cell.setCellValue("出生年月");
// totalList存放的是一条条完整的记录
List totalList = Utils.getAllDatas();
// list存放的是每一条记录的所有列
List l = null;
if (totalList != null) {
for (int i = 0; i < totalList.size(); i++) {
l = (List) totalList.get(i);
row = sheet.createRow(i + 1);
for (int j = 0; j < l.size(); j++) {
cell = row.createCell(j);
cell.setCellValue(l.get(j).toString());
}
}
}
try {
workbook.write(fout);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* poi控制单元格样式
*/
public void setCellStyle() {
FileOutputStream out = null;
try {
out = new FileOutputStream(new File("file/data2.xls"));
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("hello");
// 创建HSSFCellStyle对象
HSSFCellStyle style = workbook.createCellStyle();
// 设置此样式(样式属性)
style.setFillBackgroundColor(HSSFColor.BLUE.index2);
workbook.write(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
*
* PIO设置日期格式
*/
public void setDateFormat() {
FileOutputStream fout = null;
try {
fout = new FileOutputStream(new File("file/data3.xls"));
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(new Date());
// 设置一种数据格式
HSSFCellStyle cellstyle = workbook.createCellStyle();
cellstyle.setDataFormat(HSSFDataFormat
.getBuiltinFormat("m/d/yy h:mm"));
// 设置此单元格日期样式
cell.setCellStyle(cellstyle);
workbook.write(fout);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}</pre>
总结:我们耐心看我的代码之后,我想你肯定就豁然明白了。
其实大家看到,使用poi方式将数据写入excel的步骤就是这样的。(完全按照我们打开一个.xls文件,写入内容的步骤 来操作即可)
1.首先创建excel工作簿。
2.在这个工作簿上创建工作表
3.在这个工作表中创建行。
4.每一行添加单元格,每一个单元格加入值就可以了。
综上所述,我的代码部分也写了详细的注释,大家应该很容易看明白的。方法poiToExcel()就可以成功的将从数据库查询到的数据写入excel文件了。
如果读者还需要设置一些额外的东西,例如excel的样式,那么我们使用HSSFCell类即可。如上的方法setCellStyle()即简单的设置了一下样式。(当然,因为我的主管给我安排的任务并没有要求设置样式,所以,并没有去设置太多东西),还有就是一个关于日期的设置,也是比较繁琐的,通过上述的方法setDateFormat()可以让日期正确的显示在excel中。
下面是我查询数据用到的Utils,也供大家参考。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201304/56c29bb9adbcf00ece9fb192c61891d8.png)
package common;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Utils {
/**
* 查询表test中的所有数据,将返回的数据全部放入List集合
* @return
*/
public static List getAllDatas(){
List totalList=new ArrayList();
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
conn=ConnectionFactory.getOracleConnection();
String sql="select id ,name,birthday from test";
try {
stm=conn.createStatement();
rs=stm.executeQuery(sql);
List list=null;
while(rs.next()){
list=new ArrayList();
list.add(rs.getObject(1));
list.add(rs.getObject(2));
list.add(rs.getObject(3));
totalList.add(list);
}
} catch (SQLException e) {
e.printStackTrace();
}
return totalList;
}
}
二。使用jxl方式操作excel文件。
感觉写在一起太长了,这个部分请读者查阅我的下一篇<<jxl操作excel文件>>.(*^__^*)
相关文章推荐
- Apache POI -- 读取Excel文件数据导入到数据库
- SQL 数据的导入导出,对远程(MSsql,OracleAccess,)数据库的操作以及读取Excel,txt文件中的数据
- 使用poi导入excel文件数据到数据库
- NPOI 操作数据库中数据的导入导出(Excel.xls文件) 和null数据的处理。
- 利用java操作Excel表格(把Excel中的数据导入数据库中)
- Java操作Excel(三)将Excel中的数据批量的导入数据库
- 用Java POI操作Excel,读取数据导入DB2数据库
- Java操作Excel(三)将Excel中的数据批量的导入数据库
- 将excel文件中的数据导入到数据库中的步骤
- ASP.NET 从Excel文件导入数据到数据库(笔记)
- Java 利用poi把数据库中数据导入Excel
- gridview读取Excel文件中的数据,并将其导入数据库
- POI 导入导出Excel文件到数据库
- ASP.NET 从Excel文件导入数据到数据库
- 使用POI操作Excel将数据导入mysql
- java中用poi导入excel文件到数据库总结
- 利用POI导入Excel数据到数据库,基于Spring+SpringMVC+Mybatis
- load data infile将excel文件中的数百万条数据在1分钟内导入数据库
- 将Excel文件导入数据库(POI+Excel+MySQL)(jsp页面导入)
- struts2结合poi-3.7实现excel文件数据导入