`

导出Csv文件

阅读更多

 

 导出Csv文件思路:1.首先把数据遍历,在服务器端生成Csv文件

                                2.将服务器端生成的Csv文件提供给客户端下载

注意:如果导出数据中有科学计数法表示:请在导出数据后加上“\t”。

package com.neusoft.util.excel;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import com.neusoft.common.exception.BaseException;
import com.neusoft.dataCenter.residentManage.model.ResidentBean;

public class ExportCsv
{

 private static final Logger logger = Logger.getLogger(ExportCsv.class);

 /**
  *
  * 作用:获得Csv文件
  *
  * @param residentList
  *            需要遍历的结合
  * @param dirpath
  *            临时文件路径
  * @param Prefix
  *            临时文件前缀
  * @return
  * @throws BaseException
  */
 public File getCsvFile(List<ResidentBean> residentList, String dirpath, String Prefix) throws BaseException
 {
  BufferedWriter out = null;
  FileOutputStream writerStream = null;
  int random = (int) (Math.random() * 1000 + 1);
  File excelFile = null;
  File dir = new File(dirpath);
  if (!dir.exists())
  {
   dir.mkdirs();
  }
  try
  {
   File[] filelist = dir.listFiles();
   Date date = new Date();
   for (int i = 0; i < filelist.length; i++)
   {
    long modifytime = filelist[i].lastModified();
    long nowdate = date.getTime();

    if ((nowdate - modifytime) / 1000 >= 3600)
    {
     filelist[i].delete();
    }

   }
  } catch (Exception e)
  {
   logger.info("删除导出居民信息产生的临时文件异常", e);
  }
  try
  {
   excelFile = File.createTempFile(Prefix + random, ".csv", dir);
   int i = 1;

   writerStream = new FileOutputStream(excelFile);
   out = new BufferedWriter(new OutputStreamWriter(writerStream, "gb2312"));
   out.write("序号,姓名,手机号码,街道名称,社区名称,小区名称,年龄,性别,民族,出生日期,身份证号码,政治面貌,文化程度,地址");// 换成你需要的表头
   out.newLine();
   Iterator<ResidentBean> resultIterator = residentList.iterator();
   while (resultIterator.hasNext())
   {
    ResidentBean e = resultIterator.next();
    StringBuffer tempBuffer = new StringBuffer();
    tempBuffer.append(i);
    tempBuffer.append(",");
    tempBuffer.append(e.getName() == null ? "" : e.getName().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getMobile() == null ? "" : e.getMobile().trim() + "\t");
    tempBuffer.append(",");
    tempBuffer.append(e.getStreetName() == null ? "" : e.getStreetName().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getCommunityName() == null ? "" : e.getCommunityName().trim().replace("\r\n", ""));
    tempBuffer.append(",");
    tempBuffer.append(e.getVillageName() == null ? "" : e.getVillageName().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getAge() == null ? "" : e.getAge().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getSex() == null ? "" : e.getSex().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getNation() == null ? "" : e.getNation().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getBirthday() == null ? "" : e.getBirthday().trim() + "\t");
    tempBuffer.append(",");
    tempBuffer.append(e.getCardNo() == null ? "" : e.getCardNo().trim() + "\t");
    tempBuffer.append(",");
    tempBuffer.append(e.getNationality() == null ? "" : e.getNationality().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getEdu() == null ? "" : e.getEdu().trim());
    tempBuffer.append(",");
    tempBuffer.append(e.getAddress() == null ? "" : e.getAddress().trim());
    out.write(tempBuffer.toString());
    out.newLine();
    tempBuffer = null;
    i++;
   }
   out.flush();
  } catch (IOException e)
  {
   logger.error("生成居民信息CSV临时文件异常", e);
  } finally
  {
   if (out != null)
   {
    try
    {
     out.close();
    } catch (IOException e)
    {
     e.printStackTrace();
    }
   }
   if (writerStream != null)
   {
    try
    {
     writerStream.close();
    } catch (IOException e)
    {
     e.printStackTrace();
    }
   }
  }
  return excelFile;
 }

 /**
  * 将服务器端生成的Excel文件提供给客户端下载
  *
  * @param response
  * @param tempFile
  */
 public void download(HttpServletResponse response, File tempFile)
 {
  String filenamedownload = tempFile.toString();
  String filenamedisplay = "居民信息.csv";

  OutputStream output = null;
  FileInputStream fis = null;
  try
  {
   filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
   response.addHeader("Content-Disposition", "attachment;filename=" + filenamedisplay);
   output = response.getOutputStream();
   fis = new FileInputStream(filenamedownload);

   byte[] b = new byte[1024];
   int i = 0;
   while ((i = fis.read(b)) > 0)
   {
    output.write(b, 0, i);
   }
   output.flush();
  } catch (Exception e)
  {
   // logger.error("导出居民信息CSV文件异常", e);
  } finally
  {
   if (fis != null)
   {
    try
    {
     fis.close();
    } catch (IOException e)
    {
     e.printStackTrace();
    }
    fis = null;
   }
   if (output != null)
   {
    try
    {
     output.close();
    } catch (IOException e)
    {
     e.printStackTrace();
    }
    output = null;
   }

  }
 }

}

调用:

//residentList 需要导出的集合,一般是从数据库获得的数据

//exportDirPath 导出到服务器的Csv临时文件路径,一般是spring注入进来

//jumin 导出Csv临时文件前缀

ExportCsv xx = new ExportCsv();
File tempfile = xx.getCsvFile(residentList, exportDirPath, "jumin");
xx.download(response, tempfile);

分享到:
评论

相关推荐

    thinkphp下 导入导出csv文件

    标题"thinkphp下导入导出csv文件"涉及到的主要知识点包括: 1. CSV文件格式:CSV文件是以逗号分隔的纯文本文件,每个记录占据一行,每个字段之间由逗号分隔。这种格式使得数据可以轻松地在各种应用程序之间传递,如...

    1-Gbase导出csv文件教程

    1-Gbase导出csv文件教程

    Java导出CSV文件

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

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

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

    ASP.NET导出CSV文件

    导出CSV文件的基本过程包括以下步骤: 1. **数据准备**:首先,你需要获取要导出的数据。这通常来自数据库查询,但也可能是内存中的数据结构,如List或DataTable。确保数据正确无误且符合预期格式。 2. **响应设置...

    asp.net导出csv文件

    ASP.NET 导出 CSV 文件 本文档将详细介绍如何使用 ASP.NET 导出 CSV 文件,包括相关的代码实现和知识点解析。 标题解释 ASP.NET 导出 CSV 文件是指使用 ASP.NET 框架将数据导出到 CSV 文件格式中。CSV(Comma ...

    csv.js导出csv格式文件

    `csv.js`库为JavaScript开发者提供了强大且灵活的CSV处理能力,无论是解析还是导出CSV文件,都能轻松应对。通过熟练掌握`csv.js`,你可以更高效地在Web应用中处理CSV数据,提升开发效率。在实际项目中,根据具体需求...

    java 浏览器导出csv文件

    1.浏览器点击导出按钮,直接下载到本地,服务器不生成临时文件; 2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class=...

    jsp导出csv文件

    使用io流写如文件导出csv文件,使用jsp实现。简单的方法可以推广!

    fastadmin 导出csv文件

    fastadmin 导出csv文件

    php导出csv文件无乱码示例

    然而,由于编码问题,有时在导出CSV文件时会出现乱码。本示例将详细讲解如何使用PHP正确地导出CSV文件,避免出现乱码情况,并介绍相关的关键知识点。 首先,我们需要了解字符编码的基本概念。在处理文本数据时,...

    sqlserver-查询导出csv文件.sql

    sqlserver数据库用,指定查询语句执行后导出指定路径下生成csv文件

    oracle,teradata,hive,gbase,db2数据库导出csv命令总结

    ### Oracle、Teradata、Hive、GBase、DB2 导出 CSV 文件命令总结 #### 一、Oracle 数据库导出 CSV 文件 ##### 1. 通过 Spool 指令实现 Oracle 提供了 `spool` 命令来帮助我们将查询结果输出到一个文本文件中,...

    ruby导出csv文件

    然后,我们可以开始编写Ruby代码来导出CSV文件。以下是一个基本示例,展示了如何创建并写入CSV文件: ```ruby require 'fastercsv' # 定义要导出的数据 data = [ ['Name', 'Age', 'City'], ['John', 30, 'New ...

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

    综上所述,通过使用univocity-parsers库,我们可以在Java后端将数据导出为CSV文件,然后利用JSch库将生成的CSV文件安全地上传到SFTP服务器。这个过程涉及到了文件操作、网络传输和安全性等多个方面的知识,对于开发...

    大量数据库导出csv.sql

    大量数据库导出csv,一般的通过PLSQL导出csv文件,但对于数据量较大时,则需要通过数据库内部去调用存储过程去导出,这样效率会高出很多

    一个用servlet实现导出csv文件的实例

    在这个实例中,"一个用servlet实现导出csv文件的实例 - Java编程.htm"可能是博主分享的详细代码示例,而"一个用servlet实现导出csv文件的实例 - Java编程_files"可能包含与文章相关的其他辅助文件。在实际操作中,你...

    Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)

    1. **导出CSV文件** CSV(Comma Separated Values)是一种通用的文件格式,大多数电子表格软件如Excel都可以打开。在Asp.net中,我们可以直接将数据写入到Response流中,以逗号分隔的方式生成CSV文件。优点是简单...

    Oracle导出成csv格式后显示乱码的解决方法

    总之,解决Oracle导出CSV文件显示乱码的关键在于理解字符编码和数据解析的过程。通过正确设置文件的编码和应用正确的分隔符,可以确保数据在不同程序间顺利转换并保持可读性。如果上述方法无效,可能需要检查数据库...

    poi导出cvs文件

    标题中的“poi导出csv文件”指的是使用Apache POI库来生成CSV(逗号分隔值)文件。Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来...

Global site tag (gtag.js) - Google Analytics