CSV文件介绍 及 文件读写工具类
来源:互联网 发布:apache poi word 编辑:程序博客网 时间:2024/05/22 17:32
- 什么是CSV文件
CSV,逗号分隔值文件格式,有时也称为字符分隔值,因为分隔字符也可以不是逗号,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。
- 为什么使用CSV
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,因为大量程序都支持某种CSV变体。
- CSV的规则
开头是不留空,以行为单位。 可含或不含列名,含列名则居文件第一行。 一行数据不跨行,无空行。
以半角逗号(即,)作分隔符,列为空也要表达其存在。
列内容如存在半角引号(即”),替换成半角双引号(”“)转义,即用半角引号(即”“)将该字段值包含起来。 文件读写时引号,逗号操作规则互逆。
内码格式不限,可为 ASCII、Unicode 或者其他。 不支持特殊字符
- 使用技巧
Excel打开时无法正常显示数字字符串
数字字符串会被Excel自动转换成数字类型,长的数字字符串还会被用科学计数法表示,所以存储时可以采用如下方法存储:
=”520101199911110123”
=”2017-01-01 12:22:00”
- csvUtil 文件读写工具类 (先引入 javacsv-2.0.jar )
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(); } } }
阅读全文
0 0
- CSV文件介绍 及 文件读写工具类
- commons-csv读写CSV文件
- 读写csv 文件
- Java读写CSV文件
- csv文件读写操作
- Java读写CSV文件
- csv文件读写
- Python读写csv文件
- CSV文件的读写
- C++读写CSV文件
- 读写.csv文件
- C++读写CSV文件
- python 读写 csv文件
- C++读写CSV文件
- 读写csv文件
- Python读写csv文件
- Python读写csv文件
- 读写CSV文件
- Java线程池执行的任务抛出异常看不到日志
- Java开发新手上路三个月
- Ubuntu 16.04 apt-get更换为国内阿里云源
- 笔记大全
- 文章标题
- CSV文件介绍 及 文件读写工具类
- HTML标签学习5
- hql语句中用:号的时候怎么用like进行条件查询
- pycharm开发django项目
- virtalbox centos7增加扩展
- Unity播放视频插件
- python爬虫之cookie方式自动登录巴比特网
- apap之web dynpro for abap----ALV初始化
- Xdebug 可以显示错误信息