csv文件导出

参考博客:http://www.cnblogs.com/mingforyou/p/4103132.html

导入jar包javacsv.jar

链接:http://pan.baidu.com/s/1i5IDQ1R 密码:mycm

<!--导出csv--><!-- https://mvnrepository.com/artifact/net.sourceforge.javacsv/javacsv --><dependency>    <groupId>net.sourceforge.javacsv</groupId>    <artifactId>javacsv</artifactId>    <version>2.0</version></dependency>

新建工具类;

public class ExportCSV {
	/**
  * CSV文件生成方法
  * @param head
  * @param dataList
  * @param outPutPath
  * @param filename
  * @return
  */
 public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
         String outPutPath, String filename) {

     File csvFile = null;
     BufferedWriter csvWtriter = null;
     try {
         csvFile = new File(outPutPath + File.separator + filename + ".csv");
         File parent = csvFile.getParentFile();
         if (parent != null && !parent.exists()) {
             parent.mkdirs();
         }
         csvFile.createNewFile();

         // GB2312使正确读取分隔符","
         csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                 csvFile), "GB2312"), 1024);
         // 写入文件头部
         writeRow(head, csvWtriter);

         // 写入文件内容
         for (List<Object> row : dataList) {
             writeRow(row, csvWtriter);
         }
         csvWtriter.flush();
     } catch (Exception e) {
         e.printStackTrace();
     } finally {
         try {
             csvWtriter.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
     return csvFile;
 }
 /**
  * 写一行数据方法
  * @param row
  * @param csvWriter
  * @throws IOException
  */
 private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
     // 写入文件头部
     for (Object data : row) {
         StringBuffer sb = new StringBuffer();
         String rowStr = sb.append("\"").append(data).append("\",").toString();
         csvWriter.write(rowStr);
     }
     csvWriter.newLine();
 }
 public File createCSVFile(HttpServletRequest request,ResultSet rs,Object[] head,String fileNames) throws Exception{

     // 设置表格头
     List<Object> headList = Arrays.asList(head);
     // 设置数据
     List<List<Object>> dataList = new ArrayList<List<Object>>();
     List<Object> rowList = null;
 	while (rs.next()) {
 		rowList = new ArrayList<Object>();
 		for (int i = 0; i < head.length; i++) {
        	rowList.add(rs.getString(i+1));
        }
		dataList.add(rowList);
 	}
     // 导出文件路径
     String downloadFilePath = "C:" + File.separator + "系统日志" + File.separator + "download" + File.separator;

//     // 导出文件名称
     Date d = new Date();
     SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
     String dateNowStr = sdf.format(d);
//     String fileName = "导出操作日志数据" + dateNowStr;
     fileNames = fileNames+dateNowStr;
     // 导出CSV文件
     File csvFile = createCSVFile(headList, dataList, downloadFilePath, fileNames);

     return csvFile;
 }

}

  调用这个类;

			ResultSet rs = null;
			try {
				conn = DriverManager.getConnection(conf.getURL(),
						conf.getDBUser(), conf.getDBPasswd());// 获得数据库连接

				rs = userList(conn, sql);// 得到结果集

//				这个是导出csv文件start
				Object[] head ={ "用户名", "操作时间", "操作模块", "操作内容" };// 标题
				ExportCSV exportCsv = new ExportCSV();

				exportCsv.createCSVFile(request, rs, head, "导出操作日志数据");
//				这个是导出csv文件end

				//这个是导出excel start
//				Workbook wb = new HSSFWorkbook();
//				String headers[] = { "用户名", "操作时间", "操作模块", "操作内容" };// 标题
//				fillExcelData(rs, wb, headers);
//				export(response, wb, "导出操作日志数据.xls");
				//这个是导出excel end

			}

  

时间: 2024-10-08 15:47:06

csv文件导出的相关文章

[转载] php用csv文件导出大量数据

header ( "Content-type:application/vnd.ms-excel" ); header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GB18030", "query_user_info" ) . ".csv" ); // 打开PHP文件句柄,php://output 表示直接输出到浏览器 $fp

es实战之数据导出成csv文件

从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过65536, excel2007及以上版本支持1048576条数据.excel支持的数据量有限,并且生生成文件的速度比较慢. csv具有支持写入量大,文件较小的优点. 故选择csv作为导出文件类型. 导出文件的几种方式: 将数据从es中查询出来,在这个大前提下,对比导出文件的速度. 由前端处理 直接将数据返回给前端,

java 关于xlsx(xls) 和 csv 文件的数据解析

1.适用于xlsx 和 xls  <!--xlsx和xls文件pom依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> package com.test.demo.util; import org.ap

oracle导出多CSV文件的靠谱的

oracle导出多CSV文件的问题 ---------------------------------------------------------------------- 用ksh脚本从oracle数据库中导出80w数据到csv文件,如用户给定名字为a.csv(文件最大4000行记录),则自动生产文件为a_1.csv,a_2.csv,...., a_200.csv 我已经实现了一个方法,但80w要导5小时,用户没法接受.如下: sqlplus -s user/pwd @${SqlDir}/

PHP导出CSV文件

转载:http://blog.csdn.net/huyanping/article/details/7068356 经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/v

thinkphp导出csv文件

导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的.最后在方法后面加了一个exit结束就好了,下面是代码: 1.IndexController.class.php <?php namespace Home\Controller; use Think\Con

项目--简单导出CSV文件

//导出 protected void BtnOutPut_Click(object sender, EventArgs e) { //角色 InitialRoles(); DataTable dt = DBClass.GetDataTable(string.Format(@"SELECT * FROM {0} Order By SN desc", View(Where))); StringWriter sw = new StringWriter(); //4S店不能看到总部价格等相关

用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件

转自:http://blog.csdn.net/think2me/article/details/12999907 1. 说说csv 和 Excel 这两者都是我们平时导出或者导入数据一般用到的载体.两者有什么区别呢?csv 格式更兼容一点.那么共同点都是GBK格式的,非UTF8.所以我们上传文件的时候,老是出现乱码,就是编码问题没有转好导致. 2. 推荐的几种方法 1. 函数 fgetss($handel);  返回字符串.它就是strip_tags(fget($handel))的组合读取cs

mysqldump 导出CSV文件

mysqldump -h 127.0.0.1 -u root -p database table -t -T /home/mysql/ --fields-enclosed-by=\" --fields-terminated-by=, -w 增加条件判断语句 老外的一个处理mysql异常的错误,明天整理一下 http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-f