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是相对常用的,因此也有组件供我 ...
随机推荐
- webstorm配置babel自动转译es6的方法
1.npm安装babel npm install -g babel-cli 2.npm安装Babel的preset npm install --save-dev babel-preset-es2015 ...
- Spring AOP教程及实例
1.教程转载==>>:http://blog.csdn.net/wangpeng047/article/details/8556800 2.实例转载==>>:http://bl ...
- 图片asp木马的制作方法[转]
一个网站里面除了asp文件,再就数图片文件最多了,它让我们的网页"美丽动人"嘻嘻,但是你有没有想到过这里面暗藏的杀机,图片也可以是asp木马. 一个网站里面除了asp文件,再就数图 ...
- Thinkphp 图形验证码无法显示
不显示验证码的代码: public function verify(){ $verify = new \Think\Verify(); $verify->entry(); } 修改为: publ ...
- 网络子系统45_ip协议tos处理
//ip报头tos字段,一个字节 // 二进制位:[0 1 2] [3] [4] [5] [6] [7] // 1.[0 1 2] 表示优先级: // 000 路由 // 001 优先级 // 010 ...
- jQuery的一些小技巧()
1.判断某元素上是否绑定了某种类型的事件 var $events = $("#foo").data("events"); if( $events &&a ...
- Zabbix漏洞汇总
一.zabbix: zabbix是监控是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让 ...
- redis未授权访问漏洞那拿SHELL
一.什么是redis未授权访问漏洞: 1.redis是一种文档型数据库,快速高效,存储在内存中,定期才会写磁盘.主要用于快速缓存,数据转存处理等.默认redis开在6379端口,可以直接访问.并不需要 ...
- Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画
Android的动画的使用,请参考.Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件 ...
- Javascript一(变量,数据类型,正则表达式,数据,语句)
本文章适合具有一定程序编程语言基础的人士阅读,最好学完Java基础再来阅读本文章更容易理解语言初学者会看起来比较费劲,不易理解 一.导入脚本 在html导入Javascript的格式是: <sc ...