POI之Excel导出
1,在maven的pom文件中添加依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
2,在Controller中添加转发接口
@ResponseBody
@RequestMapping(value="exportExcel", method={RequestMethod.GET, RequestMethod.POST})
public String exportExcel(HttpServletRequest request, String name, String data) {
JSONObject result = new JSONObject();
result.put("code", 0);
result.put("msg", "success");
try {
HSSFWorkbook workbook = new HSSFWorkbook();
Method method = IExportExcelService.class.getDeclaredMethod(name + "Export", new Class[]{HSSFWorkbook.class, String.class});
method.invoke(exportExcelService, workbook, data);
String filename = name + GhFormatUtils.getFileDate() + ".xls";
String realpath = request.getServletContext().getRealPath("/");
String filepath = filedir + "/" + filename;
FileOutputStream fos = new FileOutputStream(realpath + filepath);
workbook.write(fos);
fos.close();
workbook.close();
result.put("data", filepath);
} catch (Exception e) {
e.printStackTrace();
result.put("code", -1);
result.put("msg", e.getMessage());
}
return result.toString();
}
3,在Service层编写相应生成格式的pdf
//公共函数
public void exportExcel(HSSFSheet sheet, String[] keys, JSONArray data) throws Exception {
sheet.setDefaultColumnWidth(15);
JSONObject head = (JSONObject)data.remove(0);
int lastRowNum = sheet.getLastRowNum();
//创建标题行
HSSFRow headRow = sheet.createRow(++lastRowNum);
HSSFCellStyle headerStyle = sheet.getWorkbook().createCellStyle();
headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
headerStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
for(int i = 0; i < keys.length; i++) {
HSSFCell cell = headRow.createCell(i);
cell.setCellValue(head.getString(keys[i]));
cell.setCellStyle(headerStyle);
}
HSSFCellStyle dataStyle = sheet.getWorkbook().createCellStyle();
dataStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
dataStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
//创建数据明细行
for(int i = 0; i < data.size(); i++) {
HSSFRow row = sheet.createRow(++lastRowNum);
JSONObject rowData = data.getJSONObject(i);
for(int j = 0; j < keys.length; j++) {
HSSFCell cell = row.createCell(j);
cell.setCellValue(rowData.getString(keys[j]));
cell.setCellStyle(dataStyle);
}
}
}
//具体处理函数
@Override
public void offerExport(HSSFWorkbook workbook, String dataStr) throws Exception {
JSONObject data = JSONObject.parseObject(dataStr);
JSONArray detail = data.getJSONArray("detail");
Map<String, String> dict = basMgmtService.getDictMap("col1");
//数据处理,用数据字典翻译数据
for(int i = 0; i < detail.size(); i++) {
JSONObject obj = detail.getJSONObject(i);
obj.put("col1", dict.get(obj.getString("col1")));
}
JSONObject head = new JSONObject();
String keys[] = {"col1","col2"};
head.putAll(new HashMap<String, String>(){{
put(keys[0], "第一列名称");
put(keys[1], "第二列名称");
//......
}});
detail.add(0, head);
//创建工作页
HSSFSheet sheet = workbook.createSheet(data.getString("titleName"));
//创建表头标题
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, keys.length - 1));
HSSFRow titleRow = sheet.createRow(0);
HSSFCell titleCell = titleRow.createCell(0);
titleCell.setCellValue(data.getString("titleName"));
HSSFCellStyle titleStyle = workbook.createCellStyle();
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titleCell.setCellStyle(titleStyle);
exportExcel(sheet, keys, detail);
}
4,前端请求
//公共导出Excel
function commExcel(url, name, data, appPath) {
$.ajax({
url : url,
type : 'post',
dataType : "json",
data : {
name : name,
data : JSON.stringify(data)
},
async : true,
success : function(result,status,xhr) {
if(result.code == 0) {
$("<a href=" + appPath + result.data + " />")[0].click();
} else {
var msg = result.msg;
if(!msg) {
msg = "请求失败,请手动刷新页面!";
}
top.layer.alert(msg);
}
},
error : function(xhr,status,err) {
top.layer.alert(err);
}
});
}
//页面导出Excel
function exportExcel() {
var url = "${adminPath}/finance/export/exportExcel";
var data = {
titleName : "excel名称",
customerName: "用户名称",
detail : detail
};
commExcel(url, "offer", data, "${appPath}");
}
POI之Excel导出的更多相关文章
- 转:POI操作Excel导出
package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...
- Apache POI实现excel导出
链接:http://poi.apache.org/ Excel数据导出步骤: 使用poi 完成账户数据的导出功能 导入poi jar包并添加到classpath中 1.查询数据 2.定义导出头 St ...
- poi实现Excel导出
最近做了一个导出Excel的小功能,以前没接触过,现在分享下自己的代码,想让各位帮忙看看有啥地方可以优化,也方便自己以后查阅... 首先是excelAction的代码: /** * excelActi ...
- poi excel导出,下载
poi.jar包 public void downExcel(HttpServletResponse response,Page<ShopApply> page) throws Excep ...
- 使用POI实现数据导出Excel表格
package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...
- Java中使用poi导入、导出Excel
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- POI通过模板导出EXCEL文件
一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...
- 纳税服务系统【用户模块之使用POI导入excel、导出excel】
前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...
随机推荐
- 《C++ Primer Plus》14.3 多重继承 学习笔记
多重继承(MI)描述的是有多个直接基类的类.与单继承一样,共有MI表示的也是is-a关系.例如,可以从Awiter类和Singer类派生出SingingWaiter类:class SingingWai ...
- Java的String详解
Java的String详解 博客分类: Java javaStringString详解常用方法 Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...
- 为元素绑定监听键盘上的enter键被按下事件的方法
$("someElement").on("keydown", function(event){ var key = event.which; if(key == ...
- Android内存优化总结【整理】
http://blog.csdn.net/tiantangrenjian/article/details/39182293 [前段时间接到任务着手进行app的内存优化,从各种各样的渠道搜索相关资料,最 ...
- 生命游戏/Game of Life的Java实现
首先简单介绍一下<生命游戏> 生命游戏其实是一个零玩家游戏.它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死 ...
- 破谣言——iPhone砍价
微信朋友圈和QQ空间很多朋友在传一个iPhone砍价免费送的活动.好吧,砍页面下面的那邪恶广告,第一感觉就是假的.但我要给出证明,所以就有了下面的代码.[只需把UID换成自己的就行],当你砍到5分钱的 ...
- CHMOD命令怎么用?
文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...
- c# Winform间的页面传值
Form2 public partial class Form2 : Form { public string str; public Form2() { InitializeComponent(); ...
- Android Activity 半透明效果(Translucent)
本文转自:http://norety.javaeye.com/blog/648725 今天试着做activity半透明的效果,做出来之后才发现想复杂了!很简单的几句就可以实现,不多说了,贴代码! 1. ...
- eclipse启动报错 Problems occurred when invoking code from plug-in: "org.eclipse.jface"
eclipse在使用中可能会发生错误: Problems occurred when invoking code from plug-in: "org.eclipse.jface" ...