1. var allFiles = Directory.GetFiles(@"D:\uploadpdf", "*.csv");
  2. string dataIsNull = @"D:\dataisnull.txt";
  3. string matchLog = @"D:\matchLog.txt";
  4. foreach (var filePath in allFiles)
  5. {
  6. DataTable dt = new DataTable();
  7. FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
  8. StreamReader streamReader = new StreamReader(fileStream);
  9. //记录每次读取的一行记录
  10. string strLine = string.Empty;
  11. //记录每行记录中的各字段的内容
  12. string[] aryLine = null;
  13. string[] tableHead = null;
  14. //标示列数
  15. int columCount = ;
  16. //标示是否是读取的第一行
  17. bool isFirst = true;
  18. Console.Out.WriteLine("");
  19. StringBuilder headBuilder = new StringBuilder();
  20. //逐行读取CSV中的数据
  21. while ((strLine = streamReader.ReadLine()) != null)
  22. {
  23. if (isFirst)
  24. {
  25. tableHead = strLine.Split(',');
  26. isFirst = false;
  27. columCount = tableHead.Length;
  28. //创建列
  29. foreach (var head in tableHead)
  30. {
  31. DataColumn column = new DataColumn(head);
  32. dt.Columns.Add(column);
  33. headBuilder.AppendFormat("{0}\t\t\t", head);
  34. }
  35. if (headBuilder.Length != )
  36. {
  37. using (StreamWriter sw = File.AppendText(matchLog))
  38. {
  39. sw.WriteLine(headBuilder.ToString());
  40. }
  41. }
  42. }
  43. else
  44. {
  45. aryLine = strLine.Split(',');
  46. DataRow row = dt.NewRow();
  47. if (aryLine.Length == columCount)
  48. {
  49. for (int i = ; i < columCount; i++)
  50. {
  51. row[i] = aryLine[i];
  52. }
  53. }
  54. dt.Rows.Add(row);
  55. }
  56. }
  57. if (aryLine != null && aryLine.Length > )
  58. {
  59. dt.DefaultView.Sort = tableHead[] + " asc";
  60. }
  61. streamReader.Close();
  62. fileStream.Close();
  63. if (dt.Rows.Count == )
  64. {
  65. //OutputLog(dataIsNull, string.Format("{0} data is null.", filePath));
  66. continue;
  67. }
  68. StringBuilder mpAttributesLog = new StringBuilder();
  69.  
  70. foreach (DataRow row in dt.Rows)
  71. {
  72. //var values = row.ItemArray;
  73. //foreach (var head in tableHead)
  74. //{
  75. // mpAttributesLog.AppendFormat("{0}\t\t\t", row[head]);
  76. //}
  77. mpAttributesLog.Append(string.Join("\t\t\t", row.ItemArray));
  78. if (mpAttributesLog.Length != )
  79. {
  80. using (StreamWriter sw = File.AppendText(matchLog))
  81. {
  82. sw.WriteLine(mpAttributesLog.ToString());
  83. mpAttributesLog.Clear();
  84. }
  85. }
  86. }
  87. }

读写CSV文件的更多相关文章

  1. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...

  2. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  3. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  4. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  5. 利用JavaCSV API来读写csv文件

    http://blog.csdn.net/loongshawn/article/details/53423121 http://javacsv.sourceforge.net/ 转载请注明来源-作者@ ...

  6. 使用 Apache Commons CSV 读写 CSV 文件

    有时候,我们需要读写 CSV 文件,在这里给大家分享Apache Commons CSV,读写 CSV 文件非常方便. 具体官方文档请访问Apache Commons CSV. 官方文档已经写得很详细 ...

  7. python3使用csv包,读写csv文件

    python操作csv,现在很多都用pandas包了,不过python还是有一个原始的包可以直接操作csv,或者excel的,下面举个例子说明csv读写csv文件的方法: import os impo ...

  8. C/C++读写csv文件

    博客转载自:http://blog.csdn.net/u012234115/article/details/64465398 C++ 读写CSV文件,注意一下格式即可 #include <ios ...

  9. JAVA读写CSV文件

    最近工作需要,需要读写CSV文件的数据,简单封装了一下 依赖读写CSV文件只需引用`javacsv`这个依赖就可以了 <dependency> <groupId>net.sou ...

  10. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

随机推荐

  1. oracle杀用户建用户改密码脚本

    # ******************************** # * dba_oracle_awr.sh # ******************************** # Usage: ...

  2. [译]使用JMH进行微基准测试:不要猜,要测试!

    英文原文:Micro Benchmarking with JMH: Measure, don't guess!翻译地址:使用JMH进行微基准测试:不要猜,要测试!原文作者:Antonio翻译作者:Ho ...

  3. CSS样式表(二)

    [layout] clear:该属性的值指出了不允许有浮动对象的边. 默认值:none none: 允许两边都可以有浮动对象 both: 不允许有浮动对象 left: 不允许左边有浮动对象 right ...

  4. 微信小程序-视图数据绑定

    数据绑定 在逻辑层设置数据例如: Page({ data: { message: 'Hello MINA!' } })//设置了一个属性,名称是message 值为Hello MINA! 在视图显示数 ...

  5. VMWare虚拟机设置固定ip上网方法

    转自:http://blog.csdn.net/cyberrusher/article/details/7269795 1. 在VMWare工具栏中打开:编辑--->虚拟机网络编辑器, 打开VM ...

  6. 读《编写可维护的JavaScript》第11章总结

    这周也是拿到了同程的offer,从此走上了前端之路!感谢我的贵人们.再次纪念一下~! 第11章 不是你的对象不要动 11.1 什么是你的 你的对象:当你的代码创建了这些对象或者你有职责维护其他人的代码 ...

  7. python走起之第十二话

    1. ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型 ...

  8. Redis学习-基础环境介绍(二)

    1.通过VMware安装了Centos6.8系统 2.Reids安装过程,需要GCC环境 »通过下面命令,根据提示直接安装 1 yum install gcc 3.Redis选用的是3.2.4(建议使 ...

  9. 展讯camera去除尺寸相关缓存

    amera应用的缓存在/data/data/com.android.camera2/shared_prefs目录下

  10. 分布式消息队列 Kafka

    分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐.可扩展.分布式等特点 适用场景 活动数据 ...