`
killer丿丶东
  • 浏览: 6608 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现前端一键后台生成csv文件以及csv下载功能

阅读更多
后台生成csv文件,完成前端下载功能

后台java代码
package com.jzt.mdsl.core.utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

/**
* 文件操作
*/
public class CSVUtils {

  /**
   * 生成为CVS文件
   * @param exportData
   *       源数据List
   * @param map
   *       csv文件的列表头map
   * @param outPutPath
   *       文件路径
   * @param fileName
   *       文件名称
   * @return
* @throws IOException
   */
  @SuppressWarnings("rawtypes")
  public static void createCSVFile(HttpServletResponse response,List exportData, LinkedHashMap map, String outPutPath,
                   String fileName) throws IOException {
    File csvFile = null;
    BufferedWriter csvFileOutputStream = null;
    try {
      File file = new File(outPutPath);
      if (!file.exists()) {
        file.mkdir();
      }
      //定义文件名格式并创建
      csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath));
      // UTF-8使正确读取分隔符","
      csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
        csvFile), "UTF-8"), 1024);
      // 写入文件头部
      for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {
        java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();
        csvFileOutputStream
          .write(""+ (String) propertyEntry.getValue() != null ? (String) propertyEntry.getValue() : "");
        if (propertyIterator.hasNext()) {
          csvFileOutputStream.write(",");
        }
      }
      csvFileOutputStream.newLine();
      // 写入文件内容
      for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
        Object row = (Object) iterator.next();
        for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
          .hasNext();) {
          java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
            .next();
          if((String) BeanUtils.getProperty(row,(String) propertyEntry.getKey())!=null){
              csvFileOutputStream.write((String) BeanUtils.getProperty(row,(String) propertyEntry.getKey()));
          }
          if (propertyIterator.hasNext()) {
            csvFileOutputStream.write(",");
          }
        }
        if (iterator.hasNext()) {
          csvFileOutputStream.newLine();
        }
      }
      csvFileOutputStream.flush();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        csvFileOutputStream.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
   
    /*
     *
     */
    response.setContentType("application/csv;charset=UTF-8");
    response.setHeader("Content-Disposition",
      "attachment; filename=" + URLEncoder.encode(fileName+".csv", "UTF-8"));
    InputStream in = null;
    try {
      in = new FileInputStream(csvFile.getPath());
      int len = 0;
      byte[] buffer = new byte[1024];
      response.setCharacterEncoding("UTF-8");
      OutputStream out = response.getOutputStream();
      while ((len = in.read(buffer)) > 0) {
        out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
        out.write(buffer, 0, len);
      }
      return ;
    } catch (FileNotFoundException e) {
      System.out.println(e);
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
      }
    }
  }

  /**
   * 下载文件
   * @param response
   * @param csvFilePath
   *       文件路径
   * @param fileName
   *       文件名称
* @return
   * @throws IOException
   */
  public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)
                                                  throws IOException {
    response.setContentType("application/csv;charset=UTF-8");
    response.setHeader("Content-Disposition",
      "attachment; filename=" + URLEncoder.encode(fileName+".csv", "UTF-8"));
    File file = new File(csvFilePath);
    //判断文件是否存在
    if (file.exists()) {
      File[] files = file.listFiles();
      for (int i = 0; i < files.length; i++) {
        if (files[i].isFile()) {
          if (files[i].getName().indexOf(fileName)!=-1) {
    InputStream in = null;
    try {
      in = new FileInputStream(files[i].getPath());
      int len = 0;
      byte[] buffer = new byte[1024];
      response.setCharacterEncoding("UTF-8");
      OutputStream out = response.getOutputStream();
      while ((len = in.read(buffer)) > 0) {
        out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
        out.write(buffer, 0, len);
      }
      return ;
    } catch (FileNotFoundException e) {
      System.out.println(e);
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
      }
    }
          }
        }
      }
    }
  }

  /**
   * 删除该目录filePath下的所有文件
   * @param filePath
   *      文件目录路径
   */
  public static void deleteFiles(String filePath) {
    File file = new File(filePath);
    if (file.exists()) {
      File[] files = file.listFiles();
      for (int i = 0; i < files.length; i++) {
        if (files[i].isFile()) {
          files[i].delete();
        }
      }
    }
  }

  /**
   * 删除单个文件
   * @param filePath
   *     文件目录路径
   * @param fileName
   *     文件名称
   */
  public static void deleteFile(String filePath, String fileName) {
    File file = new File(filePath);
    //判断文件是否存在
    if (file.exists()) {
      File[] files = file.listFiles();
      for (int i = 0; i < files.length; i++) {
        if (files[i].isFile()) {
          if (files[i].getName().indexOf(fileName)!=-1) {
            files[i].delete();
            return;
          }
        }
      }
    }
  }

}

前端代码:
exportOrders : function() {
var createTimeStart=$("input[name='createTimeStart']").val();
var createTimeEnd=$("input[name='createTimeEnd']").val();
var ordCd=$("input[name='ordCd']").val();
var thirdpartCd=$("input[name='thirdpartCd']").val();
var finshTimeStart=$("input[name='finshTimeStart']").val();
var finshTimeEnd=$("input[name='finshTimeEnd']").val();
var courierName=$("input[name='courierName']").val();
var promCd=$("input[name='promCd']").val();
var orderTypes=$("select[name='orderTypes'] option:selected").text();
var pharmProv=$("select[name='pharmProv'] option:selected").text();
var pharmCity=$("select[name='pharmCity'] option:selected").text();
var pharmCounty=$("select[name='pharmCounty'] option:selected").text();
var pharmacy=$("input[name='pharmacy']").val();
var currStatus=$("select[name='currStatus'] option:selected").text();


pharmProv =window.encodeURI(window.encodeURI(pharmProv));
pharmCity =window.encodeURI(window.encodeURI(pharmCity));
pharmCounty =window.encodeURI(window.encodeURI(pharmCounty));

// alert(createTimeStart);
// alert(createTimeEnd);
// alert(ordCd);
// alert(thirdpartCd);
// alert(finshTimeStart);
// alert(finshTimeEnd);
// alert(courierName);
// alert(promCd);
// alert(orderTypes);
// alert(pharmProv);
// alert(pharmCity);
// alert(pharmCounty);
// alert(pharmacy);
// alert(currStatus);

var url="/logistic/modules/order/csvGenerate?createTimeStart="+createTimeStart+"&createTimeEnd="+createTimeEnd+
            "&ordCd="+ordCd+"&thirdpartCd="+thirdpartCd+"&finshTimeStart="+finshTimeStart+"&finshTimeEnd="+finshTimeEnd+"&courierName="+courierName+"&promCd="+promCd+
            "&orderTypes="+orderTypes+"&pharmProv="+pharmProv+"&pharmCity="+pharmCity+"&pharmCounty="+pharmCounty+"&pharmacy="+pharmacy+"&asdcurrStatus="+currStatus;
//location.href=url;
$("#csvDown").attr("href",url);
        $("#csvdowns").click();
//         $.ajax({
//             type:"GET",
//             url:"/logistic/modules/order/csvGenerate?createTimeStart="+createTimeStart+"&createTimeEnd="+createTimeEnd+
//             "&ordCd="+ordCd+"&thirdpartCd="+thirdpartCd+"&finshTimeStart="+finshTimeStart+"&finshTimeEnd="+finshTimeEnd+"&courierName="+courierName+"&promCd="+promCd+
//             "&orderTypes="+orderTypes+"&pharmProv="+pharmProv+"&pharmCity="+pharmCity+"&pharmCounty="+pharmCounty+"&pharmacy="+pharmacy+"&asdcurrStatus="+currStatus,
//             dataType:"json",     
//             contentType:"application/json",              
//             success:function(msg){
//             $("#csvdown").click();
//           $.ajax({
//                    type:"GET",
//                  url:"/logistic/modules/order/csvDelete",
//                     dataType:"json",     
//                    contentType:"application/json",              
//                    success:function(msg){
//                    
//                    }
//                });
//             }
//          });
},


注意统一编码格式,改方法唯一缺陷为,下载 文件后,使用wps打开会有部分中文乱码,是有office则没问题


写的有点乱,仅供学习参考,谢谢
分享到:
评论

相关推荐

    纯js生成并下载CSV文件

    纯JavaScript实现生成并下载CSV文件,前端竟然可以生成CSV文件,感兴趣的可以看下如何生成CSV文件,并且下载。

    js生成csv文件下载

    js生成csv文件下载

    java动态实现生成CSV文件

    java动态实现生成CSV文件,java动态实现生成CSV文件,java动态实现生成CSV文件,java动态实现生成CSV文件,java动态实现生成CSV文件,java动态实现生成CSV文件,java动态实现生成CSV文件

    java 浏览器导出csv文件

    4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class="layui-btn"&gt; &lt;i class="fa fa-refresh"&gt;&nbsp;导出Excel function listHbaseExcel(url){ var tableName=$("#tableName").val();...

    一个简单的java生成CSV文件

    一个简单的java生成CSV文件

    php生成csv文件

    在PHP中生成CSV文件是一项常见的任务,特别是在数据导出、报表生成或数据分析的场景下。CSV(Comma Separated Values)格式是一种通用的数据交换格式,因其简单性和易读性而广受欢迎。以下将详细介绍如何使用PHP来...

    java实现导出csv文件并上传sftp

    在Java开发中,有时我们需要将后端数据导出为CSV(Comma Separated Values)文件,以便用户可以方便地下载和处理数据。CSV文件是一种通用的、轻量级的数据交换格式,适合存储表格数据。本篇文章将深入探讨如何使用...

    FTP上传文件压缩文件生成CSV文件

    在给定的场景中,我们需要实现一个功能,即通过Java编程语言生成压缩文件,并将其上传到FTP文件管理服务器,同时涉及到CSV(Comma Separated Values)文件的处理。以下是对各个文件及其所涉及知识点的详细解释: 1....

    thinkphp下 导入导出csv文件

    filename=filename.csv”,让浏览器下载这个CSV文件。 6. 测试环境准备:描述中提到“测试需要手动修改TP数据库配置”,意味着在测试环境中,可能需要创建一个新的数据库或修改现有数据库的连接参数,以便与CSV...

    STM32实现SD卡的fatfs文件系统,写数据生成.csv文件

    3. CSV文件的生成,通过FatFS库实现文件创建和数据写入。 4. 以太网驱动和TCP服务器的搭建,使用 lwIP 堆栈处理网络通信。 5. TCP数据接收和处理,确保数据正确写入CSV文件。 以上是STM32实现SD卡fatfs文件系统,写...

    STM32实现SD卡的fatfs文件系统,写数据生成.csv文件.rar

    STM32是一款基于ARM Cortex-M内核的微控制器,广泛应用于嵌入式系统设计,而SD卡则是一种常用的存储介质,常用于...通过这个项目,开发者可以学习到如何在嵌入式系统中实现文件系统,增强设备的数据存储和处理能力。

    XlS批量生成CSV 多个CSV合并为1个CSV

    在标题“XlS批量生成CSV 多个CSV合并为1个CSV”中,涉及到的主要知识点是Excel文件(XLS)的批处理转换以及多个CSV文件的合并。这些操作在数据分析、报表整理、数据库导入等场景中非常实用。 首先,我们需要理解XLS...

    CSV文件生成及Z压缩成zip下载

    分步生成csv,获取数据第一行生成文件标题,同时生成第一行数据,返回标题名称。 将多csv文件压缩成zip,之后删除原csv文件

    java读取csv文件并将读取的数据写入新生成的csv文件

    在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的

    完整实现ftp上传与下载并解析csv文件

    本项目涉及的关键知识点包括FTP客户端的实现、CSV文件的解析、多文件下载与并发处理以及日志记录。以下是对这些核心内容的详细阐述: 1. FTP客户端实现: FTP客户端通常由两部分组成:连接管理(登录、断开连接)...

    Python Flask文件下载示例 - excel,pdf, txt, csv

    - csv包,后台实现csv文件生成和写操作。 - reportlab包, 后台实现PDF文件生成和写操作。 - Flask的send_file包, 实现从后端向发送请求的客户端传送文件。 提供了完整的文档来帮助用户配置开发环境。 提供了所需...

    java使用jdbc将数据库数据导出到csv文件.pdf

    Java 使用 JDBC 将数据库数据导出到 CSV 文件 Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出...

    java导出csv文件并压缩(含下载提示功能)

    通过以上步骤,你已经实现了在Java中导出CSV文件,然后将其压缩成ZIP格式,并提供了一个Web接口供用户下载。确保正确配置你的服务器和文件路径,以适应实际项目的需求。同时,不要忘记处理可能出现的异常,以确保...

    用Qt写的生成csv的程序,使用方法在文件的注释里

    综上所述,这个项目结合了Qt的文件操作能力和OpenCV的图像处理功能,生成CSV文件以存储处理后的数据。对于想要理解和扩展这个程序的人来说,需要熟悉Qt的文件I/O操作以及OpenCV的基本用法。阅读源代码和注释将是获取...

    STM32F103ZE 生成并写入CSV文件 FATFS实验.rar

    在本实验中,我们将探讨如何在STM32F103ZE上实现FATFS文件系统,以及如何生成并写入CSV文件。 FATFS是DOS/Windows兼容的FAT文件系统的轻量级实现,适用于资源有限的嵌入式系统。它提供了一个通用的文件操作接口,...

Global site tag (gtag.js) - Google Analytics