`

poi导出cvs文件

阅读更多

    cvs文件其实就是一文本文件的形式存储信息,该文件可转化为excel 文件及其他文件类型。

   

    可以实现cvs文件下载的java代码

package com.jifeng.report.service.impl;

import java.io.File;
import java.io.OutputStream;
import java.text.MessageFormat;
import java.util.List;
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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.jifeng.common.common.PortalConfig;
import com.jifeng.common.util.DateFormatHelper;
import com.jifeng.common.util.IdWorkerUtil;
import com.jifeng.common.util.StringUtil;
import com.jifeng.module.campaigns.entity.Campaigns;
import com.jifeng.report.service.CampaignsCsvService;


/**
 * 营销活动cvs下载service实现
 */
@SuppressWarnings("deprecation")
@Service
public class CampaignsCsvServiceImpl implements CampaignsCsvService {
    private Logger log = LoggerFactory.getLogger(CampaignsCsvServiceImpl.class);
    
    /**
	 * 营销活动列表下载csv
	 * @param campaignsList  活动详情
	 * @param response
	 * @return
	 * @throws Exception 
	 */
	public boolean campaignsListCsvDown(List<Campaigns> campaignsList, HttpServletResponse response){
		try {
    		//CSV文件生成
            HSSFWorkbook workbook = new HSSFWorkbook();
            
            HSSFSheet sheet = workbook.createSheet("campaignsListCsvDown");
            
            HSSFCellStyle style = workbook.createCellStyle(); 			// 样式对象   
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);	// 垂直   
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);				// 水平  
            
            HSSFRow row = sheet.createRow((short) 0);   
            HSSFRow row1 = sheet.createRow((short) 1);   
            
            // 写入头部信息
            addMergeCell(sheet,row,style,0,0,1,0,"活动名称");
            addMergeCell(sheet,row,style,0,1,1,1,"开始日期");
            addMergeCell(sheet,row,style,0,2,1,2,"持续时间");
            addMergeCell(sheet,row,style,0,3,1,3,"店铺");
            addMergeCell(sheet,row,style,0,4,1,4,"开销");
            addMergeCell(sheet,row,style,0,5,0,6,"客流量变化");
            addMergeCell(sheet,row1,style,1,5,1,5,"店铺");
            addMergeCell(sheet,row1,style,1,6,1,6,"对比位置");
            addMergeCell(sheet,row,style,0,7,1,7,"平均成本每增加访客");
            
            //从第3行开始循环写数据
            int rowNum = 2;
            for (Campaigns campaigns : campaignsList) {
            	 HSSFRow row2 = sheet.createRow(rowNum);
            	 row2.createCell(0).setCellValue(campaigns.getCampaignsName());
            	 row2.createCell(1).setCellValue(DateFormatHelper.formatToMdy(campaigns.getStartTime()));
            	 row2.createCell(2).setCellValue(campaigns.getDayNum() + "天");
            	 row2.createCell(3).setCellValue(campaigns.getStoreNum() + "家");
            	 
            	 row2.createCell(4).setCellValue("$" + campaigns.getSpend());
            	 row2.createCell(5).setCellValue(campaigns.getRateChange() + "%");
            	 row2.createCell(6).setCellValue("不涉及");
            	 
            	 if(campaigns.getCostAvg() > 0){
            		 row2.createCell(7).setCellValue(campaigns.getCostAvg());
            	 }else{
            		 row2.createCell(7).setCellValue("不涉及");
            	 }
            	 
            	 rowNum++;
    		}
            
            
            File file = new File(PortalConfig.getPdfAddress()+ IdWorkerUtil.nextId() +".csv");
            String fileName = file.getPath();
            
            if(null != response) {
                // 设置下载时客户端Excel的名称
                fileName = MessageFormat.format(fileName, DateFormatHelper.getDate());
                response.setContentType("application/vnd.ms-excel");
                response.setHeader("Content-disposition", "attachment;filename=" + StringUtil.toUTF8String("campaignsListCsvDown.csv"));
                OutputStream ouputStream = response.getOutputStream();
                workbook.write(ouputStream);
                ouputStream.flush();
                ouputStream.close();
            }
            
            return true;
		} catch (Exception e) {
			log.error("",e);
			return false;
		}
	}

	
    /**
     * 营销活动详情根据日期下载csv
     * @param campaignsList  活动详情
     * @param response
     * @return
     * @throws Exception 
     */
    public boolean campaignsDetailsDayCsvDown(List<Campaigns> campaignsList, HttpServletResponse response) {
    	try {
    		//CSV文件生成
            HSSFWorkbook workbook = new HSSFWorkbook();
            
            HSSFSheet sheet = workbook.createSheet("campaignsDetailsDayAnalysis");
            
            //第一行
            HSSFRow header = sheet.createRow(0);
            header.createCell(0).setCellValue("日期");
            header.createCell(1).setCellValue("总客流量");
            header.createCell(2).setCellValue("平均客流量每店");
            header.createCell(3).setCellValue("比较时期同比");
            
            //从第2行开始循环写数据
            int rowNum = 1;
            for (Campaigns campaigns : campaignsList) {
            	 HSSFRow row = sheet.createRow(rowNum);
            	 row.createCell(0).setCellValue(campaigns.getCurrentDate());
            	 row.createCell(1).setCellValue(campaigns.getEnters());
            	 row.createCell(2).setCellValue(campaigns.getEntersAvg());
            	 row.createCell(3).setCellValue(campaigns.getRateTb() + "%");
            	 
            	 rowNum++;
    		}
            
            File file = new File(PortalConfig.getPdfAddress()+ IdWorkerUtil.nextId() +".csv");
            String fileName = file.getPath();
            
            if(null != response) {
                // 设置下载时客户端Excel的名称
                fileName = MessageFormat.format(fileName, DateFormatHelper.getDate());
                response.setContentType("application/vnd.ms-excel");
                response.setHeader("Content-disposition", "attachment;filename=" + StringUtil.toUTF8String("campaignsDetailsDayAnalysis.csv"));
                OutputStream ouputStream = response.getOutputStream();
                workbook.write(ouputStream);
                ouputStream.flush();
                ouputStream.close();
            }
            
            return true;
		} catch (Exception e) {
			log.error("",e);
			return false;
		}
    }

    
    /**
     * 营销活动详情根据场地下载csv
     * @param campaignsList  活动详情
     * @param response
     * @return
     * @throws Exception 
     */
	public boolean campaignsDetailsStoreCsvDown(List<Campaigns> campaignsList, HttpServletResponse response) {
		try {
    		//CSV文件生成
            HSSFWorkbook workbook = new HSSFWorkbook();
            
            HSSFSheet sheet = workbook.createSheet("campaignsDetailsStoreCsvDown");
            
            //第一行
            HSSFRow header = sheet.createRow(0);
            header.createCell(0).setCellValue("店铺");
            header.createCell(1).setCellValue("店铺客流量变化");
            header.createCell(2).setCellValue("销售额");
            header.createCell(3).setCellValue("成交率");
            header.createCell(4).setCellValue("客流量");
            
            //从第2行开始循环写数据
            int rowNum = 1;
            for (Campaigns campaigns : campaignsList) {
            	 HSSFRow row = sheet.createRow(rowNum);
            	 row.createCell(0).setCellValue(campaigns.getStoreName());
            	 row.createCell(1).setCellValue(campaigns.getRateChange() + "%");
            	 row.createCell(2).setCellValue("$" + campaigns.getSales());
            	 row.createCell(3).setCellValue(campaigns.getConversion() +"%");
            	 row.createCell(4).setCellValue(campaigns.getEnters());
            	 
            	 rowNum++;
    		}
            
            File file = new File(PortalConfig.getPdfAddress()+ IdWorkerUtil.nextId() +".csv");
            String fileName = file.getPath();
            
            if(null != response) {
                // 设置下载时客户端Excel的名称
                fileName = MessageFormat.format(fileName, DateFormatHelper.getDate());
                response.setContentType("application/vnd.ms-excel");
                response.setHeader("Content-disposition", "attachment;filename=" + StringUtil.toUTF8String("campaignsDetailsStoreCsvDown.csv"));
                OutputStream ouputStream = response.getOutputStream();
                workbook.write(ouputStream);
                ouputStream.flush();
                ouputStream.close();
            }
            
            return true;
		} catch (Exception e) {
			log.error("",e);
			return false;
		}
	}
	
	
	/**
	 * 合并单元格写法
	 * @param sheet
	 * @param row 
	 * @param style 		样式
	 * @param beginRow		开始行
	 * @param beginColumn	开始列
	 * @param endRow		结束行
	 * @param endColumn		结束列
	 * @param value			值
	 */
	public void addMergeCell(HSSFSheet sheet,HSSFRow row,HSSFCellStyle style,int beginRow,int beginColumn,int endRow,int endColumn,String value){
		// 单元格合并   
        // 四个参数分别是:起始行,起始列,结束行,结束列
        sheet.addMergedRegion(new Region(beginRow, (short) beginColumn, endRow, (short) endColumn));  
        //希尔数据的列
        HSSFCell cell = row.createCell((short) beginColumn);  
        // 跨单元格显示的数据 
        cell.setCellValue(value);   
        cell.setCellStyle(style);   
	}
}

 

   

分享到:
评论

相关推荐

    POI导出导入Excel

    使用POI技术对Excel导入导出及支持CSV文件导入导出。

    Java导出CSV文件

    java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。

    批量导出CVS-千万级数据处理

    本文将深入探讨如何使用POI和JXL框架批量导出CSV文件,处理千万级的数据,同时避免内存溢出的问题。 首先,让我们了解CSV(Comma Separated Values)文件格式。CSV是一种通用的、轻量级的文件格式,用于存储表格...

    ssh导出cvs到客户端

    总结,"ssh导出cvs到客户端"这个任务涉及了使用Java编程语言和Apache POI库生成CSV文件,然后利用SSH协议(可能通过JSch库)将文件安全地传输到客户端。这个过程在数据迁移、备份、分析等场景中非常常见,特别是在...

    list导出为excel,cvs

    总之,通过Apache POI库和简单的文件I/O操作,我们可以轻松地在Java中将`List`数据导出为Excel和CSV格式,这对于数据处理和分析是非常有用的。CSDN等在线资源提供了丰富的学习材料,帮助开发者快速掌握这些技能。

    java导出生成csv文件的方法

    在Java中,处理Excel文件通常使用Apache POI库,虽然POI功能强大,但处理大量数据时会占用大量内存,尤其是在导出数据时。为了解决这个问题,开发者可以转向生成CSV文件,因为CSV文件本质上是文本文件,生成和读取都...

    java导出CSV文件,EXCEL文件(不用指定下载路劲)

    在Java编程中,导出CSV(Comma Separated Values)和Excel文件是常见的数据处理任务,特别是在数据分析、报表生成和数据交换场景下。本篇将详细介绍如何在Java中实现这两个功能,无需指定下载路径,直接将文件保存到...

    easypoi导出工具

    easypoi常用导入,导出,工具,引入easypoi包ExcelUtil工具类,可以直接导出查询的数据

    java 大数据导出csv小工具

    标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...

    导入导出excel、cvs

    综上所述,"导入导出excel2003、2007、cvs 的demo"涵盖了使用Apache POI处理Excel文件以及处理CSV文件的基本步骤。CustBatchModifyAction.java作为这个过程的一部分,可能是实现批量数据修改的关键组件。在实际开发...

    java操作office和pdf文件(四)页面列表导出cvs_excel、pdf报表.pdf

    在Java编程中,处理Office文档和PDF文件是常见的任务,特别是在报表生成和数据导出的场景下。本篇文章主要介绍了如何使用Java来操作Office文件(如Excel)和PDF文件,以便将页面列表导出为CSV、Excel和PDF格式的报表...

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

    java实现csv导出千万级数据实例

    在IT行业中,处理大量数据是常见的挑战之一,尤其是在数据导出方面。本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出...

    java导出word、excel、pdf、txt文件,同时兼容office2003和office2007

    在处理文件导出,尤其是办公文档如Word、Excel、PDF和TXT时,Java提供了多个库来帮助开发者实现这些功能。本教程将详细介绍如何使用Java进行文件导出,并确保与Office 2003和Office 2007的兼容性。 首先,我们要...

    读取Excel格式CSV格式文件

    CSV文件通常用于导入和导出数据库,或者作为数据分析的基础数据源。 在Java中,读取Excel文件可以使用Apache POI库。该库提供了一套API,能够方便地操作Excel文件的各个部分,包括工作簿(Workbook)、工作表...

    flex 导出Excel(当前应用小结、示例、jar包)

    1. 数据导出至Excel.doc(包括当前导出方法小结,自己的示例,参考的网站) 2. poi-3.7-20101029.jar:当前最新的稳定的操作Excel的开发包 3. AirExcel.rar,as3xls.rar:air下Excel开发包 4. csvlib-1.4.1.rar:生成...

    j2eePractice

    CSV(Comma Separated Values)文件是一种常见的数据交换格式,常用于导入和导出表格数据。在Java中,我们可以使用Apache Commons CSV库来创建和读取CSV文件。通过该库,开发者可以轻松地将数据库查询结果或其他结构...

    真正的CSV转XLS工具

    2. **导入导出**:支持导入CSV文件,并能将其导出为XLS格式,也可能支持其他数据格式。 3. **数据预览**:在转换前,用户可以预览CSV数据,检查是否有格式问题或错误。 4. **转换设置**:允许用户自定义转换参数,如...

    Java开发工程师简历模版

    开发者负责用户注册和登录模块,通过泛型技术优化DAO层,利用POI导出Excel数据。 - **汇友办公自动化系统**:项目涵盖了多种企业办公功能,采用Spring+Struts2+Hibernate框架,结合SpringSecurity进行权限管理,...

Global site tag (gtag.js) - Google Analytics