您的位置:首页 > 编程语言 > Java开发

java 导出excel表格

2016-10-09 15:08 218 查看
工具类

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
* @author Administrator
*
*/
public class ExportUtil {
private XSSFWorkbook wb = null;

private XSSFSheet sheet = null;

/**
* @param wb
* @param sheet
*/
public ExportUtil(XSSFWorkbook wb, XSSFSheet sheet)
{
this.wb = wb;
this.sheet = sheet;
}

/**
* 合并单元格后给合并后的单元格加边框
*
* @param region
* @param cs
*/
public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs)
{

int toprowNum = region.getFirstRow();
for (int i = toprowNum; i <= region.getLastRow(); i++)
{
XSSFRow row = sheet.getRow(i);
for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++)
{
XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row,
// (short) j);
cell.setCellStyle(cs);
}
}
}

/**
* 设置表头的单元格样式
*
* @return
*/
public XSSFCellStyle getHeadStyle()
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
// 设置单元格的背景颜色为淡蓝色
cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
// 设置单元格居中对齐
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
font.setFontHeight((short) 200);
cellStyle.setFont(font);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
return cellStyle;
}

/**
* 设置表体的单元格样式
*
* @return
*/
public XSSFCellStyle getBodyStyle()
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
// 设置单元格居中对齐
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
font.setFontHeight((short) 200);
cellStyle.setFont(font);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
return cellStyle;
}
}
业务层
<pre name="code" class="html">@RequestMapping(value="reportExcel")
public void reportExcel(HttpServletResponse response){
//解决浏览器跨域问题
response.setHeader("Access-Control-Allow-Origin", "*");
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet("用户管理系统统计");
ExportUtil exportUtil = new ExportUtil(workBook, sheet);
XSSFCellStyle headStyle = exportUtil.getHeadStyle();
XSSFCellStyle bodyStyle = exportUtil.getBodyStyle();
XSSFRow headRow = sheet.createRow(0);
XSSFCell cell = null;
String[] title = {"编号","电话","用户姓名","地址","生日","职业","支付宝","圈子","状态","注册时间"};
for (int i = 0; i < title.length; i++)
{
cell = headRow.createCell(i);
cell.setCellStyle(headStyle);
cell.setCellValue(title[i]);
} <span style="white-space:pre">	</span>//用户的信息
List<User> list = userService.selectUserRec();
if(list != null && list.size() > 0){
for(int i=0;i<list.size();i++){
User user = list.get(i);
XSSFRow bodyRow = sheet.createRow(i + 1);
cell = bodyRow.createCell(0);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getRownum());

cell = bodyRow.createCell(1);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getTelephone_col());

cell = bodyRow.createCell(2);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getRealname_col());

cell = bodyRow.createCell(3);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getLocation_col());

cell = bodyRow.createCell(4);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getBirthday_col());

cell = bodyRow.createCell(5);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getProfessional_col());

cell = bodyRow.createCell(6);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getAccount_col());

cell = bodyRow.createCell(7);
cell.setCellStyle(bodyStyle);
cell.setCellValue(user.getCircle());

cell = bodyRow.createCell(8);
cell.setCellStyle(bodyStyle);
if(user.getState_col().equals("Y") || user.getState_col()=="Y"){
cell.setCellValue("启用");
}else{
cell.setCellValue("禁用");
}

cell = bodyRow.createCell(9);
cell.setCellStyle(bodyStyle);
cell.setCellValue(DateAndString.getString(user.getCreateTime()));
}
}
String fileName="用户信息汇总"+System.currentTimeMillis()+".xlsx";
try {
OutputStream os = response.getOutputStream();
response.addHeader("Content-disposition", "attachment;filename="+ new String(fileName.getBytes("gb2312"), "ISO8859-1"));
response.setContentType("application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
workBook.write(os);
os.flush();
os.close();
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: