您的位置:首页 > 数据库

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代码



<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代码



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文件>>.(*^__^*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: