实现展示的数据导出到excel表中()

来源:互联网 发布:生活的真相 知乎 编辑:程序博客网 时间:2024/06/05 02:51
package com.huaxia.service.bean;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.huaxia.service.constant.ServiceConstant;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
 * @author pengjw
 */
public class ExcelUtils {


public static void createBalanceExcel(List<ServiceRecord> serviceRecords,
HttpServletRequest request) {
String path = "e:/excel";
System.out.println(path);
// 如果此文件夹不存在,则构造此文件夹
File f = new File(path);
if (!f.exists()) {
f.mkdir();
}


String excelName = path + "/服务记录.xls";


try {
File excelFile = new File(excelName);
// 如果文件存在就删除它
if (excelFile.exists())
excelFile.delete();
// 创建工作簿
WritableWorkbook book = Workbook.createWorkbook(excelFile);
// 创建sheet工作表
WritableSheet sheet = book.createSheet("服务记录数据表", 0);


// 文字样式
jxl.write.WritableFont wfc = new jxl.write.WritableFont(
WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);


jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(
wfc);


// 设置单元格样式
// wcfFC.setBackground(jxl.format.Colour.GRAY_25);// 单元格颜色
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);// 单元格居中
wcfFC.setBorder(jxl.format.Border.ALL,
jxl.format.BorderLineStyle.THIN);// 设置边框样式
             // 设置表头 ,参数(列 ,行,名称 ),cell是单元格
Label  labelHd = new Label(0, 0, "服务类型", wcfFC);
sheet.addCell(labelHd);
labelHd = new Label(1, 0, "服务方式", wcfFC);
sheet.addCell(labelHd);


labelHd = new Label(2, 0, "手机号码", wcfFC);
sheet.addCell(labelHd);


labelHd = new Label(3, 0, "企业名称", wcfFC);
sheet.addCell(labelHd);


labelHd = new Label(4, 0, "是否批量", wcfFC);
sheet.addCell(labelHd);


labelHd = new Label(5, 0, "订单编号", wcfFC);
sheet.addCell(labelHd);
labelHd = new Label(6, 0, "客户名称", wcfFC);
sheet.addCell(labelHd);
labelHd = new Label(7, 0, "订单状态", wcfFC);
sheet.addCell(labelHd);
labelHd = new Label(8, 0, "折扣率", wcfFC);
sheet.addCell(labelHd);
            //执行插入数据
if (serviceRecords != null && serviceRecords.size() > 0) {
System.out.println("不为空的数据"); 
/*ServiceRecord serviceRecord=new ServiceRecord();*/
for (int i = 0; i < serviceRecords.size(); i++) {

//将数据库中的常量转换为中文
String strType = null;
String strMethod = null;
String strBath = null;
String replyStatus=null;
/**
* 服务类型
*/
switch (serviceRecords.get(i).getServiceType()) {
case ServiceConstant.THREE_STATUS:
strType = "三码验证";
break;
case ServiceConstant.USER_STATUS:
strType = "用户状态查询";
break;
case ServiceConstant.ONLINE_STATUS:
strType = "在网时长查询";
break;
case ServiceConstant.ADDRESS_STATUS:
strType = "职住地址验证";
break;
case ServiceConstant.TIME_STATUS:
strType = "实时位置服务";
break;
}
/**
* 服务方式
*/
switch (serviceRecords.get(i).getServiceMethod()) {
case ServiceConstant.WEBPAGE_STATUS:
strMethod = "网页";
break;
case ServiceConstant.API_STATUS:
strMethod = "API";
break;
}
/**
* 是否批量
*/
switch (serviceRecords.get(i).getIsBatch()) {
case ServiceConstant.IS_BATH:
strBath = "是";
break;
case ServiceConstant.USER_STATUS:
strBath = "否";
break;
}
/**
* 订单状态
*/
switch (serviceRecords.get(i).getReplyStatus()) {
case ServiceConstant.IS_SUCCESS:
replyStatus = "成功";
break;
case ServiceConstant.IS_ING:
replyStatus = "进行中";
break;
case ServiceConstant.IS_DEFEATED:
replyStatus = "失败";
break;
}
Label labelBd = new Label(0, i + 1, strType, wcfFC);
//System.out.println("服务类型:"+serviceRecords.get(i).getServiceType());
sheet.addCell(labelBd);

labelBd = new Label(1, i + 1,
strMethod, wcfFC);
//System.out.println("服务方式:"+serviceRecords.get(i).getServiceMethod());
sheet.addCell(labelBd);


labelBd = new Label(2, i + 1,serviceRecords.get(i).getPhone(), wcfFC);
//System.out.println("手机号码:"+serviceRecords.get(i).getPhone());
sheet.addCell(labelBd);

labelBd = new Label(3, i + 1, serviceRecords.get(i).getEnterpriseName(), wcfFC);
//System.out.println("企业名称:"+serviceRecords.get(i).getEnterpriseName());
sheet.addCell(labelBd);

labelBd = new Label(4, i + 1, strBath, wcfFC);
//System.out.println("是否批量:"+serviceRecords.get(i).getIsBatch());
sheet.addCell(labelBd);

labelBd = new Label(5, i + 1, serviceRecords.get(i).getBatchNo(), wcfFC);
//System.out.println("批量号:"+serviceRecords.get(i).getBatchNo());
sheet.addCell(labelBd);

labelBd = new Label(6, i + 1, serviceRecords.get(i).getEnterUserName(), wcfFC);
//System.out.println("操作员:"+serviceRecords.get(i).getEnterUserName());
sheet.addCell(labelBd);



labelBd = new Label(7, i + 1, replyStatus, wcfFC);
//System.out.println("订单状态:"+serviceRecords.get(i).getReplyStatus());
sheet.addCell(labelBd);

labelBd = new Label(8, i + 1, String.valueOf(serviceRecords.get(i).getDiscountRate()), wcfFC);
//System.out.println("折扣率:"+String.valueOf(serviceRecords.get(i).getDiscountRate()));
sheet.addCell(labelBd);

/*MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);
BigDecimal RightRate = BigDecimal.ZERO;*/
}
}
// 写入数据并关闭文件
book.write();
book.close();
System.out.println("Excel创建成功");
} catch (Exception e) {
System.out.println(e);
}
}

public static boolean processDownload(String saveName,
HttpServletRequest request, HttpServletResponse response) {
// 服务器保存的文件名
String fileName = "服务记录.xls";
boolean success = true;
// 获取文件下载所在的路径
String path = "e:/excel";
File fileLoad = new File(path, fileName); // 下载文件
long fileLength = fileLoad.length(); // 文件大小
byte[] buffer = new byte[1024]; // 缓冲字节数组
try {
response.reset();
response.setHeader("Content-disposition", "attachment;filename=\""
+ new String(saveName.getBytes("gb2312"), "ISO-8859-1")
+ "\"");
response.setContentType("application/octet-stream");
response.setHeader("Content_Length", String.valueOf(fileLength));


OutputStream os = response.getOutputStream();
FileInputStream in = new FileInputStream(fileLoad);
int hasRead = 0;
while ((hasRead = in.read(buffer)) != -1) {
os.write(buffer, 0, hasRead);
}
os.flush();
os.close();
in.close();
} catch (IOException e) {
success = false;
e.printStackTrace();
}
return success;
}


}






1 0
原创粉丝点击