`
dpmail
  • 浏览: 31010 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

poi方式操作excel表格数据(数据库查询到的数据导入excel文件)

阅读更多

       刚到公司,主管给我安排任务,其中一个功能是要将数据库中查询出的大量数据写入excel文件,以前没有做过这样的东西,刚开始我以为需要人们说的报表或者水晶报表的知识,自己花了1个小时,查询资料才知道大概的思路。

       通过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代码就可以了。
      

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();
			}
		}

	}
}
 总结:我们耐心看我的代码之后,我想你肯定就豁然明白了。

      其实大家看到,使用poi方式将数据写入excel的步骤就是这样的。(完全按照我们打开一个.xls文件,写入内容的步骤  来操作即可)
      1.首先创建excel工作簿。
      2.在这个工作簿上创建工作表
      3.在这个工作表中创建行。
      4.每一行添加单元格,每一个单元格加入值就可以了。

      综上所述,我的代码部分也写了详细的注释,大家应该很容易看明白的。方法poiToExcel()就可以成功的将从数据库查询到的数据写入excel文件了。

     如果读者还需要设置一些额外的东西,例如excel的样式,那么我们使用HSSFCell类即可。如上的方法setCellStyle()即简单的设置了一下样式。(当然,因为我的主管给我安排的任务并没有要求设置样式,所以,并没有去设置太多东西),还有就是一个关于日期的设置,也是比较繁琐的,通过上述的方法setDateFormat()可以让日期正确的显示在excel中。

 

   下面是我查询数据用到的Utils,也供大家参考。

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文件>>.(*^__^*)

      

8
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics