/**
* 導出
*
* @return
* @throws IOException
*/
@RequestMapping(value = "/export", produces = "application/json; charset=utf-8")
public Map<String, Object> export(GoodParams params, HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 要導出的查詢語句
ShopInfos info = shopInfosService.findInfoByShopNum(params.getShopNum());
params.setShopGoodsTable(info.getShopGoodsTable());
if (StringUtil.areNotEmpty(params.getDiannei_classify2())) {
params.setStr(params.getDiannei_classify2().split(","));
}
List<ShopGoodsBean> list = snakeGoodsManageService.selectJDGoodsByParamsNotPage(params);
if (list.size() == 0) {
return getResultObjectData(ResultCode.FAILED, "暫無數據需要修改", "暫無數據需要修改");
}
try {
// excel標題
List<String> title = new ArrayList<String>();
title.add("店鋪名稱");
title.add("商品id");
title.add("商品標題");
title.add("isbn");
title.add("作者");
title.add("出版時間");
title.add("來源(1文軒2明文3博庫)");
title.add("在售狀態(1在售2倉庫)");
title.add("外部編號");
title.add("sku_id");
title.add("運費模板id");
title.add("運費模板名稱");
title.add("庫存");
title.add("類目id");
title.add("出版社");
title.add("銷售價");
// 生產文件名
String fileName = info.getShopName() + System.currentTimeMillis() + ".xls";
ExcelUtil.createExcel(request, response, list, fileName, title);
return null;
} catch (Exception e) {
return getResultObjectData(ResultCode.FAILED, "導出異常", "導出異常");
}
}
ExcelUtil.java
package com.mingwen.common.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.mingwen.product.entity.taobao.ShopGoodsBean;
public class ExcelUtil {
public static void createExcel(HttpServletRequest request, HttpServletResponse response, List<ShopGoodsBean> list,
String fileName, List<String> title) {
try {
// 創建Excel的工作書冊 Workbook,對應到一個excel文檔
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = workbook.createCellStyle();
// 生成一個字體
HSSFFont font = workbook.createFont();
// 字體增粗
// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short) 11);
style.setFont(font);
// 創建Excel的工作sheet,對應到一個excel文檔的tab
HSSFSheet sheet = workbook.createSheet("sheet1");
// 創建Excel的sheet的一行 (表頭)
HSSFRow row = sheet.createRow(0);
// 表頭內容填充
for (int i = 0; i < title.size(); i++) {
// 設置excel每列寬度
sheet.setColumnWidth(i, 5000);
HSSFCell cell = row.createCell(i);
cell.setCellValue(title.get(i));
cell.setCellStyle(style);
}
// 創建內容行
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setWrapText(true);// 自動換行
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
for (int j = 0; j < list.size(); j++) {
try {
HSSFRow contentRow = sheet.createRow(j + 1);
for (int k = 0; k < title.size(); k++) {
HSSFCell cell = contentRow.createCell(k);
switch (k) {
case 0:
cell.setCellValue(list.get(j).getShopName());
break;
case 1:
cell.setCellValue(list.get(j).getNumberId());
break;
case 2:
cell.setCellValue(list.get(j).getTitle());
break;
case 3:
cell.setCellValue(list.get(j).getIsbn());
break;
case 4:
cell.setCellValue(list.get(j).getAuthor());
break;
case 5:
cell.setCellValue(list.get(j).getPublishDate());
break;
case 6:
cell.setCellValue(list.get(j).getDataFrom());
break;
case 7:
cell.setCellValue(list.get(j).getGoodState());
break;
case 8:
cell.setCellValue(list.get(j).getOuterId());
break;
case 9:
cell.setCellValue(list.get(j).getSkuId());
break;
case 10:
cell.setCellValue(list.get(j).getTemplate());
break;
case 11:
cell.setCellValue(list.get(j).getTemplateName());
break;
case 12:
cell.setCellValue(list.get(j).getStock());
break;
case 13:
cell.setCellValue(list.get(j).getCid());
break;
case 14:
cell.setCellValue(list.get(j).getPress());
break;
case 15:
cell.setCellValue(list.get(j).getSellingPrice());
break;
default:
break;
}
cell.setCellStyle(cellStyle);
}
} catch (Exception e) {
continue;
}
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
workbook.write(os);
} catch (IOException e) {
e.printStackTrace();
}
byte[] content = os.toByteArray();
InputStream is = new ByteArrayInputStream(content);
// 設置response參數,可以打開下載頁面
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + new String((fileName + ".xls").getBytes("gb2312"), "iso-8859-1"));
ServletOutputStream out = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (final IOException e) {
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
前臺js:
window.location.href="/goodsManage/export?shopNum="+shopId+"&goodState="+goodState+"&goodsName="+goodsName+"&jd_sku="+jd_sku
+"&goodsCood="+goodsCood+"&goodsNumber="+goodsNumber+"&price1="+price1
+"&price2="+price2+"&jdCid="+jd_classify2+"&diannei_classify2="+diannei_classify2
+"&kucun2="+kucun2+"&kucun1="+kucun1+"&formatId="+glbs
+"&yunfei_template="+yunfei_template+"&pssx="+pssx+"&miaoshu_template="+miaoshu_template
+"&goodsType="+goodsType+"&huoyuan="+huoyuan+"&startTime="+startTime+"&endTime="+endTime;
不能用ajax,否則導出的文本在瀏覽器打不開