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>




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

相关文章推荐

.NET 读取csv文件保存DataTable

#region 导入按钮        protected void UploadCSV_Click(object sender, EventArgs e)      &...

asp.net读取CSV

用Excel导了两天数据,各种问题,折磨客户也折磨了自己,以前没发现的问题一下子都暴露出来了 特意收集两篇Excel跟CSV读取相关的两篇文章 asp.net读取excel文件,将...

.NET处理CSV文件 插件CSVReader

原文:http://blog.csdn.net/dannywj1371/article/details/7217588

Java读写CSV格式文件(opencsv)

使用,下载地址: 一,读取CSV

csv文件的读取

读取 CSV 文件 python 的 CSV 库主要是面向本地文件,但进行网络数据采集的时候,很多文件都是在线的。有以下方法可以解决这个问题。 手动把 CSV 文件下载到本机,然后用 python...

CSV文件的读取

下午接到项目,读取一个csv文件并写入到数据库中,把数据存入数据库中比较简单,可以参考市面上的写法,或者用一个对象,存放读取的数据,批量插入数据库。 但是下午的数据容量较大,据说有2000W条日处理...

读取csv文件内容

原文:http://www.codeproject.com/Tips/806934/How-to-Return-the-Contents-of-a-CSV-file-as-a-Gene
  • Joyhen
  • Joyhen
  • 2014-08-13 09:16
  • 1361

CSV文件的读写

CSV是什么,以及有什么用?    (百度一下你知道的会更多)我简单的总结就是 CSV文件(comma seperated value)即逗号分隔符,用记事本打开的话会是"a","b","c"这种格...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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