博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Csv解析CsvFile
阅读量:4035 次
发布时间:2019-05-24

本文共 1349 字,大约阅读时间需要 4 分钟。

Excel导出是非常常见的需求,而大多数时候只需要导出CSV格式文件即可。Csv文件非常简单以及快速,除了日常导出报表,还可以导出大量数据用于跨系统数据交换,曾经多次遇到一次性导出数百万行数据。NewLife.Core 内封装了CsvFile类,用于Csv格式文件读写,同时支持输出到Http响应流。魔方的导出功能就是由CsvFile类提供支持。

Nuget包:NewLife.Core

源码地址:https://github.com/NewLifeX/X/blob/master/NewLife.Core/IO/CsvFile.cs

写入文件

Csv文件第一行一般是头部字段名,也有部分场合不需要头部字段名。

CsvFile 提供了 WriteLine/WriteAll 作为写入接口,可以WriteLine写入头部或一行数据,也可以WriteAll写入一批数据。

示例如下:

var file = "data/test.csv";var list = new List
{ new Object[] { 1234, "Stone", true, DateTime.Now }, new Object[] { 5678, "NewLife", false, DateTime.Today }};{ using var csv = new CsvFile(file, true); csv.Separator = ','; csv.Encoding = Encoding.UTF8; csv.WriteLine(new[] { "Code", "Name", "Enable", "CreateTime" }); csv.WriteAll(list);}var lines = File.ReadAllLines(file.GetFullPath());Assert.Equal(3, lines.Length);Assert.Equal("Code,Name,Enable,CreateTime", lines[0]);Assert.Equal($"1234,Stone,1,{((DateTime)list[0][3]).ToFullString()}", lines[1]);Assert.Equal($"5678,NewLife,0,{((DateTime)list[1][3]).ToFullString()}", lines[2]);

读取文件

Csv读取时,也要区分第一行是否头部字段名。

CsvFile统一提供了 ReadLine/ReadAll 来读取头部或者数据。

示例如下:

using var csv = new CsvFile(file);var headers = csv.ReadLine();var all = csv.ReadAll();Assert.Equal(4, headers.Length);Assert.Equal("Code", headers[0]);Assert.Equal("Name", headers[1]);Assert.Equal(2, all.Length);

转载地址:http://sxudi.baihongyu.com/

你可能感兴趣的文章
AsyncTask、View.post(Runnable)、ViewTreeObserver三种方式总结frame animation自动启动
查看>>
Android中AsyncTask的简单用法
查看>>
S3C6410启动模式介绍
查看>>
2440初始化存储器原理(接上一篇)
查看>>
S3C2440 USB 设备控制器(转)
查看>>
Linux usb 设备驱动 (1)
查看>>
解决跨网场景下,CAS重定向无法登录的问题(无需修改现有代码)
查看>>
java反编译命令
查看>>
activemq依赖包获取
查看>>
概念区别
查看>>
关于静态块、静态属性、构造块、构造方法的执行顺序
查看>>
final 的作用
查看>>
在Idea中使用Eclipse编译器
查看>>
idea讲web项目部署到tomcat,热部署
查看>>
优化IDEA启动速度,快了好多。后面有什么优化点,会继续往里面添加
查看>>
JMeter 保持sessionId
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>