C#导入导出.CSV文件

d41a27ed90f517458bb965c5d19cd45a.png

欢迎您成为我的读者,希望这篇文章能给你一些帮助。

前言

大家好,我是阿辉。

今天和大家一起来看看,C#在处理流文件时,我们最常用的导出Excel文件是如何操作的。

在日常的业务编码过程中,很多时候需求就要求导出Office能打开的表格文件。我们一般的做法是使用Office组件的帮助,或者更优秀一点的是使用NPOI组件来导出(摆脱其Office组件的限制)。但是这两种导出组件都有或多或少的弊端。

比如NPOI软件,当数据量过大超过60W的时候,在组件内部会出现溢出问题。目前还无解,只能换一个别的组件或者对导出的数据进行限制。

那么我们有没有别的办法能导出Office能打开的文件呢,此时我们的流文件.csv格式就上场了。

.csv是一种逗号分隔值文件格式,其文件以纯文本形式存储表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。

它有很多好处,可存储大量数据,耗时少,易操作,可被Office可打开等。

对于目前很多和下位机硬件进行数据交互,在上位机转存的数据一般情况都会是csv文件。

csv格式展示形式c30fcb933ee8d9cb73778287fee9b46a.png

C#导出CSV文件

try
{string strBufferLine = "";StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, Encoding.UTF8);                strmWriterObj.WriteLine(tableheader);                for (int i = 0; i < dt.Rows.Count; i++){strBufferLine = "";for (int j = 0; j < dt.Columns.Count; j++){if (j > 0)strBufferLine += ",";strBufferLine += dt.Rows[i][j].ToString();}strmWriterObj.WriteLine(strBufferLine);}strmWriterObj.Close();strmWriterObj.Dispose();return dt.Rows.Count;}catch (Exception ex){throw new Exception(ex.Message);}

C#导入CSV文件

public static DataTable Csv2Dt(string filePath, int n, DataTable dt){try{var encoding = CommonFileHelper.GetFileEncodeType(filePath);StreamReader reader = new StreamReader(filePath, encoding, false);int i = 0, m = 0;reader.Peek();DataRow dr;while (reader.Peek() > 0){                                        m = m + 1;                    string str = reader.ReadLine();if (m >= n + 1){string[] split = str.Split(',');dr = dt.NewRow();for (i = 0; i < split.Length; i++){if (i == 0){dr[i] = split[i];}                           else{if (string.IsNullOrEmpty(split[i])){                                    dr[i] = DBNull.Value;}else{dr[i] = Convert.ToDouble(split[i]);}}}dt.Rows.Add(dr);}}reader.Close();reader.Dispose();return dt;}catch (Exception ex){                    throw new Exception(ex.Message);}            }

很高兴您能看到这里,希望对你有帮助。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

很高兴能和您成为朋友。

da661c3641b42e1e5ff8c02c0796ce13.png

323d374ba80c9114be7bbe53b41e26ff.png

推荐阅读

分享给同做程序员的你我他

毕业四年,我当初是如何走上编程这条路的!

物联网工程专业的迷茫与抉择

7b660d261ad17c2b0ac114f4ee7f7894.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奋斗逼,真牛逼!

▲点击上方第二个findyi关注&#xff0c;回复“1”领取职场资料职场&认知洞察 丨 作者 / 易洋 这是findyi公众号的第304篇原创文章今天下午一个读者咨询我一个问题&#xff1a;这名读者感觉卷不过身边的加班狂人&#xff0c;但又感觉这些人丝毫不给公司创造价值&#xff0…

Entity Framework 批量插入

为什么80%的码农都做不了架构师&#xff1f;>>> 奋斗的小鸟——dogxuefeng Entity Framework 批量插入很慢 Entity Framework 批量插入很慢吗&#xff1f;我自己测试下 前几天看到一篇文章里提到过&#xff0c;在批量插入时&#xff0c;需要加上Context.Configur…

DEV-aspxgridview中的aspcheckbox

checkbox可以所以点击修改 例子演示&#xff1a;http://codecentral.devexpress.com/E2313/ 源程序&#xff1a;https://www.devexpress.com/Support/Center/Example/Details/E2313 表头可以全选所有的checkbook 具体演示如下&#xff1a;http://codecentral.devexpress.com/…

HDS业务定义永续IT架构

永续IT架构的出现并不是以取代原有设备为目的&#xff0c;而是帮助用户循序渐进地向新一代IT架构迁移。在HDS的手中&#xff0c;软件定义存储、对象存储等都成了保障业务永远在线的利器。技术创新固然可喜&#xff0c;但是最先进的技术不一定能直接带来企业收入的增加&#xff…

FreeBSD大败局

文 | 肖滢&lola策划 | lola出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;看过上一篇文章《还有人记得 Linux 之前&#xff0c;那个理想又骄傲的 BSD 吗&#xff1f;》的读者都知道&#xff0c; BSD 是 Unix 最重要的一个开源分支&#xff0c;这一本…

html拖放数据库字段,HTML5 拖放(Drag 和 Drop)

拖放是一种常见的特性&#xff0c;即抓取对象以后拖到另一个位置。在 HTML5 中&#xff0c;拖放是标准的一部分&#xff0c;任何元素都能够拖放.#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}function allowDrop(ev){ev.preventDefault();}function…

谈谈 css 的各种居中——读编写高质量代码有感

css 的居中有水平居中和垂直居中&#xff0c;这两种居中又分为行内元素居中和块级元素居中&#xff0c;不同的居中用不同方法。 水平居中 1、行内元素水平居中&#xff08;文本&#xff0c;图片&#xff09; 给父层设置 text-align:center; 可以实现行内元素水平居中。 <!DO…

.NET遗留应用改造——性能优化篇

由于各种原因我们总是要与公司各种老项目打交道。天有不测风云&#xff0c;谁也不知道这坨屎山会从哪个方向把你的嘴塞的满满的&#xff0c;还不让你吐出来。既然如此...那只能细嚼慢咽的吞下去吧。说实在话&#xff0c;只要业务不死&#xff0c;那些老大伯项目就还有价值。更何…

华为西安工业大学鸿蒙,培养百位将领、19位院士,这所211大学被誉为“华为人的母校”...

在社会上&#xff0c;985工程重点大学认可度是普遍要比211工程大学高的&#xff0c;并且985工程大学实力也比较强。但比较例外的是&#xff0c;华为这个让国人骄傲的企业&#xff0c;对一个211工程大学青睐程度却超过了绝大部分985工程大学&#xff0c;这所211大学甚至还被誉为…

Android Studio之Instant Run requires ‘Tools | Android | Enable ADB integration‘ to be enabled解决办法

1、问题 Android studio运行项目时候出现这个提示 Instant Run requires Tools | Android | Enable ADB integration to be enabled 2、原因 由于新版本中的Instant Run &#xff08;即时运行&#xff09;引起的 官方介绍 即使运行 https://developer.android.com/studio/r…

C# 11 预览,又增加了实用的语法糖

文 | 罗奇奇出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;.NET 首席项目经理凯瑟琳在博客中介绍了 C# 11 的一些预览性新功能&#xff0c;这些功能可以在 Visual Studio 17.1 和 .NET SDK 6.0.200 中体验&#xff0c;下面摘录一部分新特性作介绍&#…

java程序

This XML file does not appear to have any style information associated with it. The document tree is shown below.博客园_首页代码改变世界uuid:5de59c50-a92f-4447-96ed-ab86451ed183;id61182014-07-27T11:59:08Zfeed.cnblogs.comhttp://www.cnblogs.com/jianyus/p/386…

使用Blazor做个简单的时间戳在线转换工具

时间戳转换时间戳转换&#xff0c;关键点在于双向绑定bind-Value&#xff0c;就简单贴源码吧TimestampTool.razorpage "/timestamp" using BlazorComponent.I18n layout PublicLayout<PageTitle>T("TimestampToolTitle")</PageTitle><h2 st…

转载:Pixhawk源码笔记一:APM代码基本结构

转自 新浪微博WalkAnt 基础知识 详细参考&#xff1a;http://dev.ardupilot.com/wiki/learning-the-ardupilot-codebase/ 第一部分&#xff1a;介绍 详细参考&#xff1a;http://dev.ardupilot.com/wiki/learning-ardupilot-introduction/ ArduPilot 代码分为5个主要部分&…

nginx+tomcat8+memcached实现session共享具体操作

本次试验用到的软件包的版本如下&#xff1a;一、针对10.43.2.134的操作1.安装jdk环境tar zxf jdk-8u5-linux-x64.tar.gz mkdir /usr/javamv jdk1.8.0_05/ /usr/java/编辑/etc/profile在文档的末尾追加如下5行内容&#xff1a;JAVA_HOME/usr/java/jdk1.8.0_05JRE_HOME/usr/java…

.NET6之MiniAPI(十九):NLog

在本系例文章的第八篇中&#xff0c;我们聊过官方的日志实现&#xff0c;即《.NET6之MiniAPI(八)&#xff1a;日志》。但官方的日志功能更多是提供了一个实现基础&#xff0c;对于要求一个灵活&#xff0c;强大&#xff0c;方便的日志体系&#xff0c;官方的还是有差距的&#…

完美:C# Blazor中显示Markdown并添加代码高亮

昨天发了一篇介绍这个库&#xff1a;C# Blazor中显示Markdown文件&#xff0c;介绍怎么在Blazor中显示Markdown内容的文章&#xff0c;文章内的代码是没有高亮的&#xff0c;思来相去&#xff0c;还是要做好&#xff0c;于是百度到这篇文章.NET C# Blazor 服务端渲染Markdown&a…

使用 FieldMask 提高 C# gRpc 服务性能

前言想象一下&#xff0c;有一个服务提供个多个客户端调用&#xff0c;但不是所有客户端都需要全部的返回参数:比如商品列表服务返回商品的所有信息&#xff0c;而订单服务调用商品列表服务&#xff0c;但它其实只需要商品的编码和名称就够了。当然&#xff0c;我们可以为这个需…

HTML accesskey 属性

2019独角兽企业重金招聘Python工程师标准>>> 带有指定快捷键的超链接&#xff1a; <a href"http://www.w3school.com.cn/html/" accesskey"h">HTML</a><br /> <a href"http://www.w3school.com.cn/css/" access…

Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler) 分析

转会http://www.ibm.com/developerworks/cn/linux/l-completely-fair-scheduler/index.html?cadrs-cn-0125 Linux 调度器简史 早期的 Linux 调度器使用了最低的设计&#xff0c;它显然不关注具有非常多处理器的大型架构&#xff0c;更不用说是超线程了。1.2 Linux 调度器使用了…