//Excel文本导入到本地数据库 具体看下面代码
public class Response implements Serializable {//工具类
private boolean success = true;
private Object result = null;
private String error = "";
}
public Response importExcel(HttpServletRequest request, @RequestParam("excelFile") MultipartFile excelFile) throws Exception {//excelFile 文件名称
Response response = new Response();
BaseUser baseUser = (BaseUser) request.getSession().getAttribute("user");
List<List<List<String>>> data = ExcelUtil.readXlsxNotBlank(excelFile);//该工具类下面会帖出来
Map<String, String> params = null;
List<Map<String, String>> lists = new ArrayList<Map<String, String>>();
String jsonString = null;
Integer customer_cclstore_index = null;//店号
String customer_ccl_store_code = null;
Integer customer_ccl_store_index_name = null;//门店名称
String customer_ccl_store_name = null;
Integer customer_ccl_merchant_index_name = null;//商户名称
String customer_ccl_merchant_name = null;
Integer customer_ccl_store_index_province_name = null;//省
String customer_ccl_store_province_name= null;
Integer customer_ccl_store_index_city_name = null;//市
String customer_ccl_store_city_name = null;
Integer customer_ccl_store_index_address = null;//地址
String customer_ccl_store_address = null;
Integer customer_ccl_store_index_contacts = null;//联系人
String customer_ccl_store_contacts = null;
Integer customer_ccl_store_index_mobile = null;//联系电话
String customer_ccl_store_mobile = null;
Integer customer_ccl_store_index_email = null;//邮箱
String customer_ccl_store_email = null;
int count = 0;
try{
//开始遍历表格
for (List<List<String>> result : data) {
if (result.size() < 1) {
continue;
}
for (int i = 0; i < result.size(); i++) {
List<String> list = result.get(i);//获取到每一行
if (i == 0 || i==1 ) {//这里的意思是只遍历标题和表头名称(如上表格),并且表头名称和我们定义的必须一致否则则报空指针异常
for (int j = 0; j < list.size(); j++) {//获取到每一行的每一个单元格的内容
if (list.get(j) != null && "店号".equals(list.get(j).toString())) {
customer_cclstore_index = j;
} else if (list.get(j) != null && "门店名称".equals(list.get(j).toString())) {
customer_ccl_store_index_name = j;
} else if (list.get(j) != null && "商户".equals(list.get(j).toString())) {
customer_ccl_merchant_index_name = j;
} else if (list.get(j) != null && "省".equals(list.get(j).toString())) {
customer_ccl_store_index_province_name = j;
} else if (list.get(j) != null && "市".equals(list.get(j).toString())) {
customer_ccl_store_index_city_name = j;
} else if (list.get(j) != null && "地址".equals(list.get(j).toString())) {
customer_ccl_store_index_address = j;
}else if (list.get(j) != null && "联系人".equals(list.get(j).toString())) {
customer_ccl_store_index_contacts = j;
}else if (list.get(j) != null && "联系电话".equals(list.get(j).toString())) {
customer_ccl_store_index_mobile = j;
}else if (list.get(j) != null && "邮箱".equals(list.get(j).toString())) {
customer_ccl_store_index_email = j;
}
}
} else {
params = new HashMap<String, String>();
//获取到每一行的每一个单元格的内容,这里做了非空判断
customer_ccl_store_code = list.get(customer_cclstore_index) == null ? "" : list.get(customer_cclstore_index).toString();
customer_ccl_store_name = list.get(customer_ccl_store_index_name) == null ? "" : list.get(customer_ccl_store_index_name).toString();
customer_ccl_merchant_name = list.get(customer_ccl_merchant_index_name) == null ? "" : list.get(customer_ccl_merchant_index_name).toString();
customer_ccl_store_province_name = list.get(customer_ccl_store_index_province_name) == null ? "" : list.get(customer_ccl_store_index_province_name).toString();
customer_ccl_store_city_name = list.get(customer_ccl_store_index_city_name) == null ? "" : list.get(customer_ccl_store_index_city_name).toString();
customer_ccl_store_address = list.get(customer_ccl_store_index_address) == null ? "" : list.get(customer_ccl_store_index_address).toString();
customer_ccl_store_contacts = list.get(customer_ccl_store_index_contacts) == null ? "" : list.get(customer_ccl_store_index_contacts).toString();
customer_ccl_store_mobile = list.get(customer_ccl_store_index_mobile) == null ? "" : list.get(customer_ccl_store_index_mobile).toString();
customer_ccl_store_email = list.get(customer_ccl_store_index_email) == null ? "" : list.get(customer_ccl_store_index_email).toString();
params.put("customer_ccl_store_code", customer_ccl_store_code);
params.put("customer_ccl_store_name", customer_ccl_store_name);
params.put("customer_ccl_merchant_name", customer_ccl_merchant_name);
params.put("customer_ccl_store_province_name", customer_ccl_store_province_name);
params.put("customer_ccl_store_city_name", customer_ccl_store_city_name);
params.put("customer_ccl_store_address", customer_ccl_store_address);
params.put("customer_ccl_store_contacts", customer_ccl_store_contacts);
params.put("customer_ccl_store_mobile", customer_ccl_store_mobile);
params.put("customer_ccl_store_email", customer_ccl_store_email);
lists.add(params);//循环找到每一个值放到list集合
}
}
}
}catch (Exception e){
e.getMessage ();
response.setError ( "文件格式错误!请重新选择!" );
response.setSuccess ( false );
return response;
}
jsonString = JSONArray.fromObject(lists).toString();
List<Map<String, String>> lists = JSONArray.fromObject(jsonString);
//具体业务代码存到数据库
}
//工具类
ExcelUtil.readXlsxNotBlank
public static List<List<List<String>>> readXlsxNotBlank(MultipartFile excelFile) throws IOException {
String originFileName = excelFile.getOriginalFilename();
if(!originFileName.endsWith(".xlsx") || StringUtils.isEmpty(originFileName)){
throw new NullPointerException("文件格式错误");
}
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(excelFile.getInputStream());
List<List<List<String>>> data = new ArrayList<>();
//循环每一页,并处理当前页
for(XSSFSheet xssfSheet : xssfWorkbook) {
if(xssfSheet == null) {
continue;
}
List<List<String>> result = new ArrayList<List<String>>();
//处理当前页,循环读取每一行
for(int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (StringUtils.isEmpty(xssfRow)) {
continue;
}
int minColIx = xssfRow.getFirstCellNum();
int maxColIx = xssfRow.getLastCellNum();
List<String> rowList = new ArrayList<String>();
// 遍历这行,获取处理每个cell元素
int ia=minColIx;
for(int colIx = minColIx; colIx < maxColIx; colIx++) {
XSSFCell cell = xssfRow.getCell(colIx);
if(cell != null){
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
}
if (cell == null||cell.toString()==null||cell.toString().trim().length()==0)
ia++;
rowList.add(cell == null?null:cell.toString());
}
if(ia!=maxColIx)
result.add(rowList);
}
data.add(result);
}
return data;
}
//========================================================================================================导出
public Response exportList(HttpServletRequest request , HttpServletResponse responses ,String merchant_id){
Response response = new Response();
response = crmStore.exportList(merchant_id); //首先根据自己得需求查询出需要的数据(查询数据)
ExportCrmDaos ex = new ExportCrmDaos();//工具类
if(response.getResult () != null){
//导出方法
ex.exportExcel ( responses, (List<Map<String, Object>>) response.getResult() );
}else{
Response errResponse = new Response();
errResponse.setSuccess(false);
errResponse.setError("查询失败");
responses.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try{
out = responses.getWriter();
out.println( JSONObject.fromObject(errResponse).toString());
}catch(Exception e){
log.error(e.getMessage());
}finally {
if(out!=null){
out.close();
}
}
}
return response;
}
public Response exportList(String merchant_id){
Response response = new Response ();
List<Map<String,Object>> fault_list = new ArrayList<Map<String,Object>>();
StringBuffer sql = new StringBuffer();
List<Object> params_fault = new ArrayList<Object>();
List<Map<String,Object>> findeListByName = jdbcTemplate.queryForList ( " select id,name as nameMerchant from customer_ccl_merchant where id= ?" ,new Object[]{merchant_id} );
sql.append ( "select s.*,m.name as merchant_name from customer_ccl_store s join customer_ccl_merchant m on s.merchant_id = m.id where 1=1 \n" );
if(merchant_id != null && !merchant_id.equals ( "" ) ){
sql.append(" and m.name = ? ");
params_fault.add(findeListByName.get ( 0 ).get ( "nameMerchant" ));
System.err.println ( "####################################"+findeListByName.get ( 0 ).get ( "nameMerchant" ) );
fault_list = jdbcTemplate.queryForList(sql.toString(),params_fault.toArray());
}else{
fault_list = jdbcTemplate.queryForList(sql.toString());
}
response.setResult(fault_list);
return response;
}
//工具类
public class ExportCrmDaos {
Logger log = Logger.getLogger(this.getClass());
/* Integer no_index_ = 0;
String no_title_ = "序号";*/
Integer no_index = 0;
String no_title = "店号"; //store_code
Integer fault_no_index = 1;
String fault_no_title = "门店名称";//store_name
Integer merchant_index = 2;
String merchant_title = "商户"; //merchant_name
Integer store_index = 3;
String store_title = "省";//province_name
Integer province_index = 4;
String province_title = "市";//city_name
Integer city_index = 5;
String city_title = "地址";//address
Integer address_index = 6;
String address_title = "联系人";//contacts
Integer fault_describe_index = 7;
String fault_describe_title = "联系电话";//mobile
Integer model_index = 8;
String model_title = "邮箱";//email
public void exportExcel(HttpServletResponse httpResponse, List<Map<String,Object>> fault_list) {
// System.err.println ( "共"+fault_list+"数据" );
//设置下载信息
String file_name = DateUtil.format(new Date ())+".xlsx";
httpResponse.setContentType("application/force-download");
httpResponse.addHeader("Content-Disposition", "attachment;fileName=" + file_name);
//创建下载对象
try{
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
//创建标题 合并单元格
CellRangeAddress titleRegion = new CellRangeAddress(0, 0, 0, 9);
sheet.addMergedRegion(titleRegion);
Row titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue("门店记录");
//创建表头
Row lableRow = sheet.createRow(1);
// lableRow.createCell(no_index_).setCellValue(no_title_);
lableRow.createCell(no_index).setCellValue(no_title);
lableRow.createCell(fault_no_index).setCellValue(fault_no_title);
lableRow.createCell(merchant_index).setCellValue(merchant_title);
lableRow.createCell(store_index).setCellValue(store_title);
lableRow.createCell(province_index).setCellValue(province_title);
lableRow.createCell(city_index).setCellValue(city_title);
lableRow.createCell(address_index).setCellValue(address_title);
lableRow.createCell(fault_describe_index).setCellValue(fault_describe_title);
lableRow.createCell(model_index).setCellValue(model_title);
//填写内容
int now_row_index = 2;
//int row_no = 1;
for(Map<String,Object> fault_info : fault_list){
Row dataRow = sheet.createRow(now_row_index);
// dataRow.createCell(no_index_).setCellValue(row_no);merchant_name
dataRow.createCell(no_index).setCellValue( ObjectUtils.isEmpty(fault_info.get("code"))?"":fault_info.get("code").toString());
dataRow.createCell(fault_no_index).setCellValue( ObjectUtils.isEmpty(fault_info.get("name"))?"":fault_info.get("name").toString()); dataRow.createCell(merchant_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("merchant_name"))?"":fault_info.get("merchant_name").toString());
dataRow.createCell(store_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("province_name"))?"":fault_info.get("province_name").toString());
dataRow.createCell(province_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("city_name"))?"":fault_info.get("city_name").toString());
dataRow.createCell(city_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("address"))?"":fault_info.get("address").toString());
dataRow.createCell(address_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("contacts"))?"":fault_info.get("contacts").toString());
dataRow.createCell(fault_describe_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("mobile"))?"":fault_info.get("mobile").toString());
dataRow.createCell(model_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("email"))?"":fault_info.get("email").toString());
now_row_index+=1;
//row_no++;
}
httpResponse.setContentType("application/octet-stream;charset=UTF-8");
httpResponse.setHeader("Content-Disposition", "attachment;filename="+ System.currentTimeMillis()+".xlsx");
httpResponse.addHeader("Pargam", "no-cache");
httpResponse.addHeader("Cache-Control", "no-cache");
//输出
OutputStream outputStream = httpResponse.getOutputStream();
workbook.write(outputStream);
}catch (Exception e1){
e1.printStackTrace();
Response errResponse = new Response();
errResponse.setSuccess(false);
errResponse.setError("查询失败");
httpResponse.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try{
out = httpResponse.getWriter();
out.println( JSONObject.fromObject(errResponse).toString());
}catch(Exception e2){
log.error(e2.getMessage());
}finally {
if(out!=null){
out.close();
}
}
}
}
}
//*****************************************************************************************************************************************导出
导出对应的前端JS
function xxxx(){
location.href = 'storeContent/exportStoreModeAction.action?export_time_start='+export_time_start+'&export_time_end='+export_time_end;
}
假如我想导出一下的格式
数据一对多怎么导出??
控制层: dao.exportExcel(httpResponse, (List<Map<String, Object>>) response.getResult());//调用导出工具类代码
Dao层查出来的数据
public Response getListForExport(String merchant_id, String create_time_start, String create_time_end) {
Response response = new Response();
List<Map<String,Object>> fault_list = new ArrayList<Map<String,Object>>();
StringBuffer sql_fault = new StringBuffer();
List<Object> params_fault = new ArrayList<Object>();
sql_fault.append("SELECT f.*,m.`name` AS merchant_name,s.`name` AS store_name,s.province_name,city_name,address ");
sql_fault.append("FROM hw_fault f ");
sql_fault.append(" left JOIN customer_ccl_merchant m ON f.merchant_id = m.id ");
sql_fault.append(" left JOIN customer_ccl_store s ON f.store_id = s.id ");
sql_fault.append("WHERE 1 = 1 ");
if(!StringUtils.isEmpty(merchant_id)){
sql_fault.append(" and f.merchant_id = ? ");
params_fault.add(merchant_id);
}
if(!StringUtils.isEmpty(create_time_start)){
sql_fault.append(" and f.create_time >= ? ");
params_fault.add(DateUtil.getDateFormat(create_time_start,"yyyy-MM-dd HH:mm").getTime());
}
if(!StringUtils.isEmpty(create_time_end)){
sql_fault.append(" and f.create_time <= ? ");
params_fault.add(DateUtil.getDateFormat(create_time_end,"yyyy-MM-dd HH:mm").getTime());
}
fault_list = jdbcTemplate.queryForList(sql_fault.toString(),params_fault.toArray());
StringBuffer sql_worklist = new StringBuffer();
sql_worklist.append("SELECT w.*,a.`name` AS aftersale_name ");
sql_worklist.append("FROM hw_worklist w ");
sql_worklist.append(" left JOIN customer_aftersale a ON w.aftersale_id = a.id ");
sql_worklist.append("WHERE w.fault_id = ? ");
for(Map<String,Object> fault_info : fault_list){
List<Map<String,Object>> worklist_list = new ArrayList<Map<String,Object>>();
worklist_list = jdbcTemplate.queryForList(sql_worklist.toString(),new Object[]{fault_info.get("id").toString()}); //一对多或者一对一
fault_info.put("worklist_list",worklist_list);
}
response.setResult(fault_list);
return response;
}
工具类:
@Repository
public class ExportFaultDao {
Logger log = Logger.getLogger(this.getClass());
Integer no_index = 0;
String no_title = "序号";
Integer fault_no_index = 1;
String fault_no_title = "故障号";
Integer merchant_index = 2;
String merchant_title = "所属商户";
Integer store_index = 3;
String store_title = "所属门店";
Integer province_index = 4;
String province_title = "省";
Integer city_index = 5;
String city_title = "市";
Integer address_index = 6;
String address_title = "地址";
Integer fault_describe_index = 7;
String fault_describe_title = "故障描述";
Integer model_index = 8;
String model_title = "型号";
Integer fault_state_index =9;
String fault_state_title= "当前状态";
Integer create_time_index = 10;
String create_time_title = "上报时间";
/*Integer aftersale_name_index = 11;
String aftersale_name_title ="指派工程师";*/
Integer end_time_index = 11;
String end_time_title ="解决时间";
Integer workList_no_index = 12;
String workList_no_title = "工单号";
Integer aftersale_index = 13;
String aftersale_title = "工程师";
Integer aftersale_create_time_index = 14;
String aftersale_create_time_title = "指派时间";
Integer aftersale_acceptance_time_index = 15;
String aftersale_acceptance_time_title = "受理时间";
Integer aftersale_service_start_time_index = 16;
String aftersale_service_start_time_title = "上门时间";
Integer aftersale_service_end_time_index = 17;
String aftersale_service_end_time_title = "完成时间";
Integer aftersale_end_type_index = 18;
String aftersale_end_type_title = "服务结果";
Integer aftersale_fault_type_index = 19;
String aftersale_fault_type_title = "故障类型";
Integer aftersale_measures_index = 20;
String aftersale_measures_title = "解决措施";
Integer aftersale_sparepart_index = 21;
String aftersale_sparepart_title = "备件";
public void exportExcel(HttpServletResponse httpResponse, List<Map<String,Object>> fault_list) {//List<Map<String,Object>> fault_list 查出来的参数
//设置下载信息
String file_name = DateUtil.format(new Date())+".xlsx";
httpResponse.setContentType("application/force-download");
httpResponse.addHeader("Content-Disposition", "attachment;fileName=" + file_name);
//创建下载对象
try{
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet();
//创建标题 合并单元格
CellRangeAddress titleRegion = new CellRangeAddress(0, 0, 0, 19);//合并表头,这四个参数分别表示:开始行数,最后行数,开始列数,结束列数
sheet.addMergedRegion(titleRegion);
Row titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue("创捷故障报修登记表");//表头的名字
//创建表头标题
Row lableRow = sheet.createRow(1);
lableRow.createCell(no_index).setCellValue(no_title);
lableRow.createCell(fault_no_index).setCellValue(fault_no_title);
lableRow.createCell(merchant_index).setCellValue(merchant_title);
lableRow.createCell(store_index).setCellValue(store_title);
lableRow.createCell(province_index).setCellValue(province_title);
lableRow.createCell(city_index).setCellValue(city_title);
lableRow.createCell(address_index).setCellValue(address_title);
lableRow.createCell(fault_describe_index).setCellValue(fault_describe_title);
lableRow.createCell(model_index).setCellValue(model_title);
lableRow.createCell(fault_state_index).setCellValue(fault_state_title);//
lableRow.createCell(create_time_index).setCellValue(create_time_title);//
lableRow.createCell(end_time_index).setCellValue(end_time_title);
lableRow.createCell(workList_no_index).setCellValue(workList_no_title);
lableRow.createCell(aftersale_index).setCellValue(aftersale_title);
lableRow.createCell(aftersale_create_time_index).setCellValue(aftersale_create_time_title);
lableRow.createCell(aftersale_acceptance_time_index).setCellValue(aftersale_acceptance_time_title);
lableRow.createCell(aftersale_service_start_time_index).setCellValue(aftersale_service_start_time_title);
lableRow.createCell(aftersale_service_end_time_index).setCellValue(aftersale_service_end_time_title);
lableRow.createCell(aftersale_end_type_index).setCellValue(aftersale_end_type_title);
lableRow.createCell(aftersale_fault_type_index).setCellValue(aftersale_fault_type_title);
lableRow.createCell(aftersale_measures_index).setCellValue(aftersale_measures_title);
lableRow.createCell(aftersale_sparepart_index).setCellValue(aftersale_sparepart_title);
//填写内容
int now_row_index = 2;
int row_no = 1;
for(Map<String,Object> fault_info : fault_list){
List<Map<String,Object>> worklist_list = (List<Map<String, Object>>) fault_info.get("worklist_list");
//检查是否需要合并单元格
if(worklist_list.size()>1){
for(int i = 0;i<12;i++){
CellRangeAddress dataRegion = new CellRangeAddress(now_row_index, now_row_index+worklist_list.size()-1, i, i);
sheet.addMergedRegion(dataRegion);
}
}
//给每一个单元格赋值,循环一次赋值一行
Row dataRow = sheet.createRow(now_row_index);
dataRow.createCell(no_index).setCellValue(row_no);
dataRow.createCell(fault_no_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("fault_no"))?"":fault_info.get("fault_no").toString());
dataRow.createCell(merchant_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("merchant_name"))?"":fault_info.get("merchant_name").toString());
dataRow.createCell(store_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("store_name"))?"":fault_info.get("store_name").toString());
dataRow.createCell(province_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("province_name"))?"":fault_info.get("province_name").toString());
dataRow.createCell(city_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("city_name"))?"":fault_info.get("city_name").toString());
dataRow.createCell(address_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("address"))?"":fault_info.get("address").toString());
dataRow.createCell(fault_describe_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("fault_describe"))?"":fault_info.get("fault_describe").toString());
dataRow.createCell(model_index).setCellValue(ObjectUtils.isEmpty(fault_info.get("model"))?"":fault_info.get("model").toString());
String type_fault_state = fault_info.get("fault_state").toString ();
String typeStrings ;
if(!ObjectUtils.isEmpty ( type_fault_state )){
if(type_fault_state.equals ( "0" )){
typeStrings = "未指派";
}else if(type_fault_state.equals ( "1" )){
typeStrings = "未受理";
}else if(type_fault_state.equals ( "2" )){
typeStrings = "已受理";
}else if(type_fault_state.equals ( "3" )){
typeStrings = "未解决";
}else if(type_fault_state.equals ( "4" )){
typeStrings = "已解决";
}else{
typeStrings = "不详";
}
}else{
typeStrings = "";
}
dataRow.createCell(fault_state_index).setCellValue(typeStrings);
dataRow.createCell(create_time_index).setCellValue(DateUtil.getDate(new Date(Long.parseLong(fault_info.get("create_time").toString())),"yyyy-MM-dd HH:mm:ss"));
String times = String.valueOf ( fault_info.get("end_time") );
if(times == null || times.equals ( "" ) || times.equals ( "null" )){
// dataRow.createCell(end_time_index).setCellValue(times+"");//解决时间
}else{
Date date = new Date ( );
date.setTime ( Long.valueOf ( times ) );
SimpleDateFormat SDF = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" );
dataRow.createCell(end_time_index).setCellValue(SDF.format ( date ));//解决时间
}
//以上先查询出上面表格红色的字体,下面在查询黄色的内容也就是一对一或者一对多并且合并单元格
for(int i = 0;i<worklist_list.size();i++){
Map<String,Object> worklist_info = worklist_list.get(i);
Row subDataRow;
if(i==0){
subDataRow = dataRow;
}else{
subDataRow = sheet.createRow(now_row_index+i);
}
subDataRow.createCell(workList_no_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("workList_no"))?"":worklist_info.get("workList_no").toString());
subDataRow.createCell(aftersale_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("aftersale_name"))?"":worklist_info.get("aftersale_name").toString());
subDataRow.createCell(aftersale_create_time_index).setCellValue(DateUtil.getDate(new Date(Long.parseLong(worklist_info.get("create_time").toString())),"yyyy-MM-dd HH:mm:ss"));
subDataRow.createCell(aftersale_acceptance_time_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("acceptance_time"))?"":DateUtil.getDate(new Date(Long.parseLong(worklist_info.get("acceptance_time").toString())),"yyyy-MM-dd HH:mm:ss"));
subDataRow.createCell(aftersale_service_start_time_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("service_start_time"))?"":DateUtil.getDate(new Date(Long.parseLong(worklist_info.get("service_start_time").toString())),"yyyy-MM-dd HH:mm:ss"));
subDataRow.createCell(aftersale_service_end_time_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("service_end_time"))?"":DateUtil.getDate(new Date(Long.parseLong(worklist_info.get("service_end_time").toString())),"yyyy-MM-dd HH:mm:ss"));
subDataRow.createCell(aftersale_end_type_index).setCellValue(ObjectUtils.isEmpty(worklist_info.get("end_type"))?"":(worklist_info.get("end_type").toString().equals("1")?"已解决":"未解决"));
subDataRow.createCell(aftersale_fault_type_index).setCellValue(worklist_info.get("fault_type")==null?"":worklist_info.get("fault_type").toString());
subDataRow.createCell(aftersale_measures_index).setCellValue(worklist_info.get("measures")==null?"":worklist_info.get("measures").toString());
subDataRow.createCell(aftersale_sparepart_index).setCellValue(worklist_info.get("sparepart")==null?"":worklist_info.get("sparepart").toString());
}
if(worklist_list.size() == 0){//这个判断必须有如果一对一 则不需要合并单元格再当前表格行数+1即可
now_row_index +=1;
}else{
now_row_index+=worklist_list.size();//如以上表格内容是1对多 必须加上查询出来的多个条数的内容,如当前是52行 查询出了3条数据(一对多),则下次循环必须是+3行而不是+1
}
row_no++;
}
httpResponse.setContentType("application/octet-stream;charset=UTF-8");
httpResponse.setHeader("Content-Disposition", "attachment;filename="+ System.currentTimeMillis()+".xlsx");
httpResponse.addHeader("Pargam", "no-cache");
httpResponse.addHeader("Cache-Control", "no-cache");
//输出
OutputStream outputStream = httpResponse.getOutputStream();
workbook.write(outputStream);
}catch (Exception e1){
e1.printStackTrace();
Response errResponse = new Response();
errResponse.setSuccess(false);
errResponse.setError("查询失败");
httpResponse.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try{
out = httpResponse.getWriter();
out.println(JSONObject.fromObject(errResponse).toString());
}catch(Exception e2){
log.error(e2.getMessage());
}finally {
if(out!=null){
out.close();
}
}
}
}
}