【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

csv读取写出

原创 2016年05月31日 15:30:36

// 需要引入javacsv-2.0.jar


// csvUtil  csv帮助类

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;

/*import javax.servlet.http.HttpServletResponse;*/

public class csvUtil {
	/**
	 * 读取CSV文件
	 * @param csvFilePath 文件路径
	 */
	public static ArrayList<String[]> readeCsv(String csvFilePath) {
		ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据
		try {
			CsvReader reader = new CsvReader(csvFilePath, ',',Charset.forName("GBK")); // 一般用这编码读就可以了
			reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。
			while (reader.readRecord()) { // 逐行读入除表头的数据
				csvList.add(reader.getValues());
			}
			reader.close();
		} catch (Exception ex) {
			System.out.println(ex);
		}
		return csvList;
	}
	
	/**
	 * 读取CSV文件
	 * @param csvIs csv导入数据流
	 */
	public static ArrayList<String[]> readeCsvByIs(InputStream csvIs) {
		ArrayList<String[]> csvList = new ArrayList<String[]>(); // 用来保存数据
		try {
			CsvReader reader = new CsvReader(csvIs,Charset.forName("GBK")); // 一般用这编码读就可以了
			reader.readHeaders(); // 跳过表头 如果需要表头的话,不要写这句。
			while (reader.readRecord()) { // 逐行读入除表头的数据
				csvList.add(reader.getValues());
			}
			reader.close();
		} catch (Exception ex) {
			System.out.println(ex);
		}
		return csvList;
	}
	

	/**
	 * 写入CSV文件
	 * 
	 * @param csvFilePath 写出路径
	 * 
	 * @param contents 数据内容
	 */
	public static void writeCsv(String csvFilePath ,List<String[]> contents) {
		try {
			//String csvFilePath = "c:/test.csv";
			CsvWriter wr = new CsvWriter(csvFilePath, ',',Charset.forName("GBK"));
			for (int i = 0; i < contents.size(); i++) {
				wr.writeRecord(contents.get(i));
			}
			wr.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	 /**
     * 输出文件
     * @param ou   文件流
     * @param list      需要输出的数据
     * @throws java.io.IOException
     */
    public static void writeCsv(OutputStream ou, List<String[]> list) throws IOException {
        CsvWriter cw = new CsvWriter(ou, ',', Charset.forName("UTF-8"));
        for(String[] s: list) {
            cw.writeRecord(s);
        }
        //在文件中增加BOM,详细说明可以Google,该处的byte[] 可以针对不同编码进行修改
        ou.write(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF });
        cw.flush();
        cw.close();
    }

    /**
     * 导出csv模板
     *
     * @param response
     * @param headers 模板列标题
     * @param csvName csv文件名
     * @throws java.io.IOException
     */
    public static void exportCsv(HttpServletResponse response,String headers,String csvName) throws IOException {
        OutputStream fos = response.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        try {
            fos = response.getOutputStream();
            bos = new BufferedOutputStream(fos);
            //这个就就是弹出下载对话框的关键代码
            response.setContentType("text/csv");
            response.setHeader("Content-disposition","attachment;filename=" +URLEncoder.encode(csvName+".csv", "UTF-8"));
            headers += "\n";
            bos.write(headers.getBytes("GBK"));
            bos.flush();
        } catch (IOException ex) {
            System.out.print(ex);
        } finally {
            fos.close();
            bos.close();
        }
    }
}

// controller层调取

/**
     * 导入csv文件
     *
     * @throws java.io.IOException
     */
    @RequestMapping("/importCsv")
    public Object importCsv(MultipartHttpServletRequest request){
        try { //文件数据
            MultipartFile file = request.getFile("fileName");
            //读取csv文件,获取csv中的数据
            ArrayList<String[]> csvList = CsvUtil.readeCsvByIs(file.getInputStream());
        } catch (Exception ex) {
            System.out.print(ex);
        }
        return 1;
    }

 /**
     * 导出csv模板
     *
     * @param response
     * @throws java.io.IOException
     */
    @RequestMapping("/exportCsv")
    public void exportCsv(HttpServletRequest request,HttpServletResponse response) throws IOException {
        String headers = "header1,header2,header3";
        String csvName = "csvName";
        CsvUtil.exportCsv(response,headers,csvName);
    }

js导入按钮代码:

function importCsv(){
    var dataForm = document.forms['dataForm'];
    dataForm.fileName.click();
}

//选择上传文件后触发
function uploadFile(){
    ajaxFileUpload();
}

function ajaxFileUpload() {
    $.ajaxFileUpload({
        url : url,//用于文件上传的服务器端请求地址
        secureuri : false,//一般设置为false
        fileElementId : 'fileName',//文件上传控件的id属性
        dataType : 'json',//返回值类型 一般设置为json
        success : function(data) //服务器成功响应处理函数
        {
            
        }
    })
}

html页面代码:

<form id="dataForm" name="dataForm" enctype="multipart/form-data" method="post" >
      <input id="fileName" name="fileName" type="file" style="display:none;" onchange="uploadFile()">
      <button type="button" class="btn btn-info" onclick="importCsv()">
      <span style="white-space:pre">		</span><span class="glyphicon"></span> 导入csv
      </button>
</form>




版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

【codecs.BOM】使用Python程序输出csv格式数据

这些天做一个数据处理的任务: 要求是输出一个csv格式的文件。 每次用NotePad++打开都正常,一用excel打开就一万个乱码, 好不容易乱码没了,用作分隔符的逗号也进单元格去了(变成单列了) ...
  • okcd00
  • okcd00
  • 2016-03-17 18:04
  • 1289

打开csv文件 配置vs2010

背景:   开始---运行: 在运行框里输入以下内容 reg add HKCU\Software\Microsoft\Office\12.0\Word\Options /v NoReReg /...

Delphi对Excel的所有操作

学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!   一) 使用动态创建的方法  首先创建 Excel 对象,使用ComObj:  var Excel...

大数据量csv文件导入数据库

今天客户拿过来一个500多M的csv文件(汗,中国移动导的欠费记录,导出的人也是强人),用Excel直接打开只能看到100多万条记录,超过部分就看不到了。 让我们想想办法,看能不能拆分成多个excel...

数据存储之CSV

一个完整的(大)数据处理可以分为这几个阶段: 数据收集 数据存储 数据建模 数据分析 数据变现。 我们APP的项目进度,已经从入门到处理了。 第一步的数据收集基本已经完成。 现在是第二...

SQL 读取csv 文件批量插入数据

use test /* create table temp_pre ( vc_product_id varchar(20) de...

Delphi DBGrid 导出csv

procedure OutPutDBGridToCSV(AGrd:TDBGrid; AQuery: TQuery); var   i,ColNum: Integer;   Title,Data,...

Delphi TXLSReadWriteII 导出EXCEL

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, F...

利用ADO读取CSV文件

CSV文件是一种文字档,各项资料使用”,”号分隔。例如 编号,分类,姓名,国文,数学,理化,社会,合计 78,A,王五,36,47,54,42,179 66,B,吴三,41,35,33,73,1...

SpringMVC从数据库导入导出 CSV文件(利用multipart/form-data实现文件上传)

个人学习web开发过程中的一些经验总结,希望这个博客能记录下我的成长历程,每天进步一点。 也希望跟大家共同学习,欢迎评论,转载请注明出处....
  • Nifury
  • Nifury
  • 2016-06-17 10:11
  • 2828
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)