struts2 poi 把数据导出到excel
来源:互联网 发布:掌上贵金属行情软件 编辑:程序博客网 时间:2024/04/26 18:36
利用Apache的poi把数据导出到excel是一件很简单的一件事,这里结合struts2进行做一个小例子,看看poi如何把数据导出到excel。
1.下载poi和struts2,这里用的是poi3.7和struts-2.2.1。
2.把poi和struts2的jar包加到lib目录下,下图所示。
3.struts2的配置文件 struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="default" extends="struts-default"><action name="exportExcel" class="com.crd.action.ExportExcelAction"> <result name="success" type="stream"> <!-- 指定输出的为Excel文件 --> <param name="contentType">application/vnd.ms-excel</param><!-- 类型是附件和指定下载时文件的默认名字 --><param name="contentDisposition">attachment;filename="Users.xls"</param><!-- 这里的inputName的属性要和action里相应的get方法的名字对应。例如action的对应的方法名是getDownloadFile所以这里用downloadFile --><param name="inputName">downloadFile</param></result></action></package></struts>4.关键部分,那就是下载的那部分代码。先讲讲poi导出到excel的原理。poi的原理就是一个单元格一个单元格的画表格,先创建一个工作薄,再创建一个表格(因为一个工作薄有多个表格),然后再给表格添加行,给行添加单元格,同时设置单元格格式。
(1)声明一个工作薄
HSSFWorkbook wb=new HSSFWorkbook();
(2)创建一个表格
HSSFSheet sheet=wb.createSheet("表格名字");
(3)创建一个表格样式
HSSFCellStyle cellStyle = wb.createCellStyle();
给样式设置背景颜色等等
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short)10); // 字体高度
font.setColor(HSSFFont.COLOR_NORMAL); // 字体颜色
font.setFontName( "宋体" );
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度
cellStyle.setFont(font);
(4)给表格创建一行(多行用for循环)
HSSFRow row=sheet.createRow(0);
(5)给行添加单元格
HSSFCell cell=row.createCell(i);
(6)给单元格设置格式
cell.setCellStyle(cellStyle);
(7)往单元格写数据
cell.setCellValue("序号");
(8)写出到excle
OutputStream os=new FileOutputStream(file);
wb.write(os);
os.close();
action的具体代码如下
@SuppressWarnings("serial")public class ExportExcelAction extends ActionSupport{public InputStream getDownloadFile() throws Exception{return this.getInputStream();}public InputStream getInputStream() {HSSFWorkbook wb=new HSSFWorkbook();HSSFSheet sheet=wb.createSheet("用户列表");// 设置表格样式 HSSFCellStyle cellStyle = wb.createCellStyle();HSSFFont font = wb.createFont();font.setFontHeightInPoints((short)10); // 字体高度 font.setColor(HSSFFont.COLOR_NORMAL); // 字体颜色 font.setFontName( "宋体" ); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度 //font.setItalic( true ); // 是否使用斜体 //font.setStrikeout(true); // 是否使用划线 cellStyle.setFont(font); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中 cellStyle.setWrapText(false); HSSFRow row=sheet.createRow(0);HSSFCell cell=row.createCell(0);cell.setCellStyle(cellStyle); // 设置单元格样式cell.setCellValue("序号");cell=row.createCell(1);cell.setCellStyle(cellStyle); // 设置单元格样式cell.setCellValue("姓名");cell=row.createCell(2);cell.setCellStyle(cellStyle); // 设置单元格样式cell.setCellValue("年龄");//如果是数据库的数据的话,用一个for循环就可以输出全部了row=sheet.createRow(1);cell=row.createCell(0);cell.setCellValue(1);cell=row.createCell(1);cell.setCellValue("张三");cell=row.createCell(2);cell.setCellValue("22");//String fileName=RandomStringUtils.randomAlphanumeric(10);String fileName="Users";fileName=new StringBuffer(fileName).append(".xls").toString();File file=new File(fileName);try {OutputStream os=new FileOutputStream(file);wb.write(os);os.close();InputStream is=new FileInputStream(file);return is;} catch (Exception e) {e.printStackTrace();}return null;}@Overridepublic String execute() throws Exception {return SUCCESS;}}5.运行结果如下:
6.总结
是很简单吧,里面有些写得不好的地方。
比如说在action里直接写死了生成的excel的名字Users
//String fileName=RandomStringUtils.randomAlphanumeric(10);
String fileName="Users";
如果在同一时间有多人点击下载按钮,如果导出的数据不同时,可能会出错,可以改成随机取名字,但这样的话生成的临时的excel会有很多,要写个方法进行删除过期的excel,或者就不生成临时的excel,直接导出来就可以了,这样无疑是最好的(后面改进,或者有兴趣的读者改进)。以前做的时候用的是struts1,直接
OutputStream out=response.getOutputStream();就可以了。
资源下载链接http://download.csdn.net/detail/crd629277/3688404
- struts2 poi 把数据导出到excel
- 使用JDBC+POI把Excel中的数据导出到MySQL
- 使用JDBC+POI把Excel中的数据导出到MySQL
- 用POI把数据导出为Excel
- 用POI把数据导出为Excel
- 用POI把数据导出为Excel
- 使用POI把数据导出excel表
- struts2中使用poi导出excel数据
- struts2+poi导出数据为excel
- POI+Struts2+maven excel 导出数据
- 把数据导出到EXCEL
- struts2导出数据到Excel
- struts2导出数据到Excel
- Struts2 poi导出excel
- 用apache poi导出数据到Excel
- POI导出数据到EXCEL经典实现
- java poi导出list数据到excel
- poi技术导出海量数据到excel
- 操作系统启动过程分析
- C/C++变量在内存中的分布
- OTL 4.0, OTL 类
- fork source exec区别差异
- 常用C语言字符串操作函数
- struts2 poi 把数据导出到excel
- Office2003与Office2007/2010共存方法
- 一步一步写算法(之n!中末尾零的个数统计)
- Linux下的多进程编程
- 中文计算机核心期刊排名及投稿信息
- 纹理(讲得比较详细的文章)
- C++入门简单实例
- Microsoft License(简称MS-CL)
- c#范型中特殊关键字where & default