controller:

    /**
* 导出报表
* @return
*/
@RequestMapping(value = "/export")
@ResponseBody
public void export(HttpServletRequest request,HttpServletResponse response, String id, String auditno) throws Exception {
/*jxl
String headers = "";
String[] array = addEmpService.returnStringArray(id);
jxl.createTable(headers, array, "F:\\qq"+auditno+".xls");*/
//获取数据
List<EmpAuditDetails> list = addEmpService.queryDetailsById(id); //excel标题
String[] title = {"姓名","身份证号码","性别","出生日期","保险缴费基数","工种","增员年月","增员原因","手机号","紧急联系人","紧急联系电话","家庭住址","通讯地址省级","通讯地址市级","通讯地址区县级","通讯地址补充信息","户口所在地省级","户口所在地市级","户口所在地区县级","户口所在地补充信息"}; //excel文件名
String fileName = auditno+".xls"; //sheet名
String sheetName = auditno;
String [][] content = new String[list.size()][];
for (int i = ; i < list.size(); i++) {
content[i] = new String[title.length];
content[i][] = list.get(i).getName();
content[i][] = list.get(i).getIdno();
content[i][] = list.get(i).getSex();
content[i][] = list.get(i).getBirth();
content[i][] = String.valueOf(list.get(i).getInsuranceBase());
content[i][] = list.get(i).getJob();
content[i][] = DateUtils.convertDateToString(list.get(i).getAddYm(),"yyyy-MM-dd");
content[i][] = list.get(i).getAddReason();
content[i][] = list.get(i).getPhone();
content[i][] = list.get(i).getLink();
content[i][] = list.get(i).getLinkphone();
content[i][] = list.get(i).getAddress();
content[i][] = list.get(i).getProvince();
content[i][] = list.get(i).getCity();
content[i][] = list.get(i).getDistrict();
content[i][] = list.get(i).getAddressExtra();
content[i][] = list.get(i).getNativeProvince();
content[i][] = list.get(i).getNativeCity();
content[i][] = list.get(i).getNativeDistrict();
content[i][] = list.get(i).getNativeExtra(); } //创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null); //响应到客户端
try {
ResponseUtil.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}

excelutil

package com.lf.common.utils;

import java.sql.ResultSet;
import java.util.List;
import java.util.Map; import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; public class ExcelUtil {
/**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @param wb HSSFWorkbook对象
* @return
*/
public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){ // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
} // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(); // 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFFont font=(HSSFFont) wb.createFont();
font.setColor(HSSFColor.RED.index);
style.setFont(font);// 创建一个居中格式 //声明列对象
HSSFCell cell = null; //创建标题
for(int i=;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=;i<values.length;i++){
row = sheet.createRow(i + );
for(int j=;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}
ResponseUtil:
package com.lf.common.utils;

import org.apache.poi.ss.usermodel.Workbook;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException; public class ResponseUtil {
public static void write(HttpServletResponse response, Object o) throws Exception {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println(o.toString());
out.flush();
out.close();
} public static void export(HttpServletResponse response, Workbook wb, String fileName) throws Exception{
//设置头 固定格式
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1")); response.setContentType("text/html;charset=utf-8"); OutputStream out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
}
//发送响应流方法
public static void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

jxl:

package  com.lf.common.utils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.springframework.stereotype.Service; import com.lf.utils.DateUtils; import jxl.CellView;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.UnderlineStyle;
import jxl.read.biff.BiffException;
import jxl.write.Border;
import jxl.write.BorderLineStyle;
import jxl.write.Colour;
import jxl.write.Label;
import jxl.write.NumberFormats;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
@Service
public class JxlWriteExcel {
public boolean createTable(String header, String[] body, String filePath) {
boolean createFlag = true;
WritableWorkbook book;
try {
// 根据路径生成excel文件
book = Workbook.createWorkbook(new File(filePath)); // 创建一个sheet名为"表格"
WritableSheet sheet = book.createSheet("表格", );
// 设置NO列宽度 // 去掉整个sheet中的网格线
sheet.getSettings().setShowGridLines(false);
Label tempLabel = null;
// 表头输出
String[] headerArr = header.split(",");
int headerLen = headerArr.length;
// 循环写入表头内容
for (int i = ; i < headerLen; i++) {
tempLabel = new Label( i, , headerArr[i],
getHeaderCellStyle());
sheet.addCell(tempLabel);
sheet.setColumnView(i, );
}
// 表体输出
int bodyLen = body.length;
// 循环写入表体内容
for (int j = ; j < bodyLen; j++) {
String[] bodyTempArr = body[j].split(",");
for (int k = ; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = null;
tempCellFormat = getBodyCellStyle();
if (tempCellFormat != null) {
if (k == || k == (bodyTempArr.length - )) {
tempCellFormat.setAlignment(Alignment.CENTRE);
}
}
tempLabel = new Label( k, + j, bodyTempArr[k],
tempCellFormat);
sheet.addCell(tempLabel);
}
}
book.write();
book.close();
} catch (IOException e) {
createFlag = false;
System.out.println("EXCEL创建失败!");
e.printStackTrace();
} catch (RowsExceededException e) {
createFlag = false;
System.out.println("EXCEL单元设置创建失败!");
e.printStackTrace();
} catch (WriteException e) {
createFlag = false;
System.out.println("EXCEL写入失败!");
e.printStackTrace();
} return createFlag;
}
public boolean createErroeTable(String header, String[] body, String filePath ,String sheetName,int sheetNum) {
boolean createFlag = true;
WritableWorkbook book ;
WritableSheet sheet = null ;
File errorFile = new File(filePath);
try {
if (errorFile.exists()) {
Workbook workbook = Workbook.getWorkbook(errorFile);
book = workbook.createWorkbook(errorFile,workbook);
sheet = book.createSheet(sheetName, );
}else {
// 根据路径生成excel文件
book = Workbook.createWorkbook(errorFile); // 创建一个sheet名为"表格"
sheet = book.createSheet(sheetName, sheetNum);
}
// 设置NO列宽度 // 去掉整个sheet中的网格线
sheet.getSettings().setShowGridLines(false);
Label tempLabel = null;
// 表头输出
String[] headerArr = header.split(",");
int headerLen = headerArr.length;
// 循环写入表头内容
for (int i = ; i < headerLen; i++) {
tempLabel = new Label( i, , headerArr[i],
getHeaderCellStyle());
sheet.addCell(tempLabel);
sheet.setColumnView(i, );
}
// 表体输出
int bodyLen = body.length;
// 循环写入表体内容
for (int j = ; j < bodyLen; j++) {
String[] bodyTempArr = body[j].split(",");
for (int k = ; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = null;
tempCellFormat = getBodyCellStyle();
if (tempCellFormat != null) {
if (k == || k == (bodyTempArr.length - )) {
tempCellFormat.setAlignment(Alignment.CENTRE);
}
}
tempLabel = new Label( k, + j, bodyTempArr[k],
tempCellFormat);
sheet.addCell(tempLabel);
}
}
book.write();
book.close();
} catch (IOException e) {
createFlag = false;
System.out.println("EXCEL创建失败!");
e.printStackTrace();
} catch (RowsExceededException e) {
createFlag = false;
System.out.println("EXCEL单元设置创建失败!");
e.printStackTrace();
} catch (WriteException e) {
createFlag = false;
System.out.println("EXCEL写入失败!");
e.printStackTrace();
} catch (BiffException e) {
System.out.println("读取EXCEL对象失败!");
e.printStackTrace();
} return createFlag;
}
public WritableCellFormat getHeaderCellStyle() {
WritableFont font = new WritableFont(WritableFont.createFont("宋体"), ,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat headerFormat = new WritableCellFormat(
NumberFormats.TEXT);
try {
// 添加字体设置
headerFormat.setFont(font);
// 设置单元格背景色:表头为黄色
headerFormat.setBackground(Colour.YELLOW);
// 设置表头表格边框样式
// 整个表格线为粗线、黑色
headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,
Colour.BLACK);
// 表头内容水平居中显示
headerFormat.setAlignment(Alignment.CENTRE);
} catch (WriteException e) {
System.out.println("表头单元格样式设置失败!");
}
return headerFormat;
} public WritableCellFormat getBodyCellStyle() {
WritableFont font = new WritableFont(WritableFont.createFont("宋体"), ,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);
WritableCellFormat bodyFormat = new WritableCellFormat(font);
try {
// 设置单元格背景色:表体为白色
bodyFormat.setBackground(Colour.WHITE);
// 设置表头表格边框样式
// 整个表格线为细线、黑色
bodyFormat
.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
} catch (WriteException e) {
System.out.println("表体单元格样式设置失败!");
}
return bodyFormat;
}
public void deleteFile(String fileName){
File file = new File(fileName);
if(file.exists()){
file.delete();
System.out.println("删除文件成功");
}else{
System.out.println("文件不存在");
}
}
/**
* 创建表格
* @module:
* @author: ZhangK
* @date: Aug 1, 2016
*/
public String createTableByZk(String header, String[] body, String filePath) {
WritableWorkbook book; String date = DateUtils.convertDateToString(new Date(), "yyyyMMddHHmmssSSS");
String fileName=date+".xls";
File file = null;
if (fileName !=null|| "".equals(fileName)) {
file = new File(fileName);
}else{
return null;
}
try {
// 根据路径生成excel文件
book = Workbook.createWorkbook(file);
// 创建一个sheet名为"表格"
WritableSheet sheet = book.createSheet("发货情况", );
// 去掉整个sheet中的网格线
sheet.getSettings().setShowGridLines(false);
Label tempLabel = null;
// 表头输出
String[] headerArr = header.split(",");
int headerLen = headerArr.length;
// 循环写入表头内容
CellView cv = null;
for (int i = ; i < headerLen; i++) {
tempLabel = new Label(i, , headerArr[i],
getHeaderCellStyle());
sheet.addCell(tempLabel);
// 设置NO列宽度
sheet.setColumnView(i, );
}
// 表体输出
int bodyLen = body.length; // 循环写入表体内容
for (int j = ; j < bodyLen; j++) {
String[] bodyTempArr = body[j].split(",");
for (int k = ; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = null;
tempCellFormat = getBodyCellStyle();
if (tempCellFormat != null) {
if (k == || k == (bodyTempArr.length - )) {
tempCellFormat.setAlignment(Alignment.CENTRE);
}
}
tempLabel = new Label( k, + j, bodyTempArr[k],
tempCellFormat);
sheet.addCell(tempLabel);
}
}
book.write();
book.close();
} catch (IOException e) {
fileName = null;
System.out.println("EXCEL创建失败!");
e.printStackTrace();
} catch (RowsExceededException e) {
fileName = null;
System.out.println("EXCEL单元设置创建失败!");
e.printStackTrace();
} catch (WriteException e) {
fileName = null;
System.out.println("EXCEL写入失败!");
e.printStackTrace();
} return fileName;
} /**
* list<map>去重
* @param list
* @param param_list
* @return
*/
public String[] RemoveDuplicate(List<Map<String, String>> list,List<String> param_list) {
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
Set<Map> setMap = new HashSet<Map>();
for (Map<String, String> map1 : list) {
if (setMap.add(map1)) {
listMap.add(map1);
}
}
String[] rowData_retail = new String[listMap.size()];
for (int i = ; i < listMap.size(); i++) {
Map<String, String> map = listMap.get(i);
for (int j = ; j < param_list.size(); j++) {
String param_i = map.get(param_list.get(j));
param_i = map.get(param_list.get(j)) == null ? "" : map
.get(param_list.get(j));
if (j == param_list.size() -) {
rowData_retail[i] = rowData_retail[i] + param_i ;
}else if (j==) {
rowData_retail[i] = param_i + ",";
}else {
rowData_retail[i] = rowData_retail[i] + param_i + ",";
} } }
return rowData_retail;
}
public static void main(String[] args) throws IOException {}
}
												

poi 和jxl导出excel(2)的更多相关文章

  1. Java中使用poi导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  2. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  3. POI导入和导出Excel总结

    POI导入和导出Excel总结   POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...

  4. JXL导出Excel(只支持xls版本)——(一)

    注意: 导出的后缀是xls可以直接打开,如果导出的后缀是xlsx打开报错,需要手动将名字改为xls才可以打开.也就是JXL不可以导出xlsx的excel. Jar包

  5. jxl导出excel的问题

    jxl导出excel,通常浏览器会提示excel导出完成情况及默认保存路径,或让用户自定义选择保存路径,要达到这种效果,有些要做下修改,如:response是jsp的内置对象,在jsp中使用时不用声明 ...

  6. apache poi根据模板导出excel

    需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...

  7. Java web项目JXl导出excel,(从eclipse上移动到tomact服务器上,之路径更改)

    我用的是jxl导出excel,比较简单,最开始我是固定路径不能选择,很局限,后来改了,而且固定路径当把项目放在服务器上时,路径不可行. 在网上各位大神的帮助成功设置响应头,并且可选保存路径. 1.前端 ...

  8. jxl导出Excel中需要跳过的的坑

    正如上篇文章(JXL封装不能使用static关键字问题)所说,在jxl导出Excel时候如果频繁使用到WritableCellFormat去设置单元格的样式,这个时候经常会出现两种情况: 1.报警告: ...

  9. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

随机推荐

  1. LINUX-JPS工具

    JPS工具 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/u ...

  2. LINUX-磁盘空间

    df -h 显示已经挂载的分区列表 ls -lSr |more 以尺寸大小排列文件和目录 du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' du -sk * | sort -rn ...

  3. 10.3andXE7的DEVExpress18.2.1记录备查

    记录备查: win10 DEVExpress18.2.1用DevExpressVCL一键编译安装工具_v10.3.2 - 2018-12-12.exe(包括help,备份...升级系统不用重新安装控件 ...

  4. hibernate的QBC查询之Criteria用法

    //return (DeliverCost) super.getSession().createCriteria(getMyClass()).add(Restrictions.eq("isd ...

  5. Leetcode 123.买卖股票的最佳时机III

    买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你 ...

  6. Sigmoid Function

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51734189 Sigmodi 函数是一 ...

  7. 最接近的点配对(分治问题理解) && HDU 1007代码

    题目大意: 给定一堆点集,在这一堆点集中找到一组点集它们之间的距离达到最短 对于HDU1007因为求圆的半径,所以距离还要除以2 普通情况下,可以将nge点,将任意两个点之间的距离都算一遍,在循环过程 ...

  8. 个人常用git命令

    最近开始使用git,将自己常用git命令做一个简单归纳,便于记忆. 初始化及配置 git init:初始化资料库 git config --global user.name 'xxx':配置用户名 g ...

  9. Codeforces Round #391(div 1+2)

    A =w= B QuQ C 题意:有n个体育场,每个体育场有一些小精灵,一共m种小精灵(n<=1e5,m<=1e6),可以将数字全为i的精灵进化成j(可以互相进化也可以选择不进化),问有多 ...

  10. Mysql 使用delete drop truncate 删除数据时受外键约束影响解决方案

    先禁用数据库的外键约束: set foreign_key_checks=0; 进行删除操作 delete.drop.truncate 恢复数据库外键约束: set foreign_key_checks ...