GVKun编程网logo

使用C#读取CSV文件(c#如何读取csv文件)

20

对于想了解使用C#读取CSV文件的读者,本文将是一篇不可错过的文章,我们将详细介绍c#如何读取csv文件,并且为您提供关于C#写入(覆盖形式)数据到CSV文件和读取CSV文件、c#怎么读取csv文件、

对于想了解使用C#读取CSV文件的读者,本文将是一篇不可错过的文章,我们将详细介绍c#如何读取csv文件,并且为您提供关于C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、c#怎么读取csv文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、fgetcsv函数读取csv文件中文字符串的问题的有价值信息。

本文目录一览:

使用C#读取CSV文件(c#如何读取csv文件)

使用C#读取CSV文件(c#如何读取csv文件)

我正在编写一个简单的导入应用程序,需要读取CSV文件,在中显示结果,DataGrid并在另一个网格中显示CSV文件的损坏行。例如,在另一个网格中显示短于5个值的线。我正在尝试这样做:

StreamReader sr = new StreamReader(FilePath);importingData = new Account();string line;string[] row = new string [5];while ((line = sr.ReadLine()) != null){    row = line.Split('','');    importingData.Add(new Transaction    {        Date = DateTime.Parse(row[0]),        Reference = row[1],        Description = row[2],        Amount = decimal.Parse(row[3]),        Category = (Category)Enum.Parse(typeof(Category), row[4])    });}

但是在这种情况下,很难对数组进行操作。有没有更好的方法来分割值?

答案1

小编典典

不要重新发明轮子。利用.NET BCL中已有的功能。

  • 添加对的引用Microsoft.VisualBasic(是的,它说是VisualBasic,但它也可以在C#中工作-请记住,最后都只是IL)
  • 使用Microsoft.VisualBasic.FileIO.TextFieldParser该类来解析CSV文件

这是示例代码:

using (TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv")){    parser.TextFieldType = FieldType.Delimited;    parser.SetDelimiters(",");    while (!parser.EndOfData)     {        //Processing row        string[] fields = parser.ReadFields();        foreach (string field in fields)         {            //TODO: Process field        }    }}

在我的C#项目中,它对我来说很棒。

以下是一些其他链接/信息:

  • MSDN:从Visual Basic中的逗号分隔文本文件中读取
  • MSDN:TextFieldParser类

C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件

C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件

/// <summary>
        /// 写入数据到CSV文件,覆盖形式
        /// </summary>
        /// <param name="csvPath">要写入的字符串表示的CSV文件</param>
        /// <param name="LineDataList">要写入CSV文件的数据,以string[]类型List表示的行集数据</param>
        public static   void OpCsv(string csvPath, List<string[]> LineDataList)
        {
            using (FileStream fs = new FileStream(csvPath.Trim(), FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
                {
                    StringBuilder sb_csvStr = new StringBuilder();
                    for (int i = 0; i < LineDataList.Count; i++)//<--row
                    {
                        sb_csvStr.Clear();
                        for (int j = 0; j < LineDataList[i].Length; j++)//<--col
                        {
                            sb_csvStr.Append(string.Format("{0},", LineDataList[i][j].ToString()));
                        }
                        sw.WriteLine(sb_csvStr.ToString().Substring(0, sb_csvStr.ToString().Length - 1));
                    }
                    fs.Flush();
                }
            }
        }

 

/// <summary>
        /// 读取csv文件
        /// </summary>
        /// <param name="csvPath">string 标识的 csv文件路径</param>
        /// <returns>返回的读取的 csv 文件的行集合</returns>
        public static string[] ReadCsv(string csvPath)
        {
            string[] csvLineList = File.ReadAllLines(csvPath, Encoding.Default);
            return csvLineList;
        }    

 

c#怎么读取csv文件

c#怎么读取csv文件

如何使用 c# 读取 csv 文件?使用 file.readalllines() 读取所有行。使用 streamreader 逐行读取。使用第三方库(如 csvhelper)简化读取过程。

c#怎么读取csv文件

如何使用 C# 读取 CSV 文件

CSV(逗号分隔值)是一种流行的数据格式,常用于存储表格数据。在 C# 中,可以使用以下方法读取 CSV 文件:

1. 使用 File.ReadAllLines()

string[] lines = File.ReadAllLines("path/to/file.csv");
登录后复制

此方法将读取 CSV 文件的所有行并将其存储在字符串数组 lines 中。

2. 使用 StreamReader

using (StreamReader reader = new StreamReader("path/to/file.csv"))
{
    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        // 处理行数据
    }
}
登录后复制

此方法使用 StreamReader 类逐行读取 CSV 文件。

3. 使用第三方库(例如 CsvHelper)

可以使用第三方库(如 CsvHelper)来简化 CSV 文件的读取过程。CsvHelper 提供了以下方法:

using CsvHelper;

using (var reader = new CsvReader(new StreamReader("path/to/file.csv")))
{
    reader.Configuration.Delimiter = ","; // 设置分隔符
    var records = reader.GetRecords<myrecord>(); // 读入记录
}</myrecord>
登录后复制

处理 CSV 数据

读取 CSV 文件后,可以使用以下技术处理数据:

  • 分隔行:使用 String.Split() 方法以逗号作为分隔符拆分行。
  • 解析值:将每个值转换为适当的数据类型,如整数、浮点数或字符串。
  • 存储数据:将解析后的值存储在列表、数组或其他数据结构中。

示例

以下是读取 CSV 文件并将其数据存储在列表中的示例代码:

using System.Collections.Generic;

var lines = File.ReadAllLines("path/to/file.csv");
var data = new List<list>&gt;();

foreach (var line in lines)
{
    var values = line.Split('','');
    data.Add(new List<string>(values));
}</string></list>
登录后复制

以上就是c#怎么读取csv文件的详细内容,更多请关注php中文网其它相关文章!

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

一.csv文件的创建

(1)新建一个文本文档:

打开新建文本文档,进行编辑。

注意:关键字与关键字之间用英文半角逗号隔开。第一行为引用字段,第二行为对应值。例如:

(2)生成csv文件

将文本文档重命名更改文件扩展名,将“.txt”改为“.csv”

重命名重新打开后就是一个CSV文件格式。例如:

二.数据的表示和读写

csv文件的每一行都是一维数据,可以使用python中的列表类型表示,整个csv文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。

注:打开CSV文件的路径可以是绝对路径也可以是相对路径,可根据个人习惯来编写。

(1)导入csv格式数据到列表:

1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[] #定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4     line=line.replace("\n","")
5     ls.append(line.split(","))
6 print(ls)
7 fo.close()#关闭文件

运行结果:

[[''城市'', ''环比'', ''同比'', ''定基''], [''北京'', ''101.5'', ''120.7'', ''121.4''], [''上海'', ''101.2'', ''127.3'', ''127.8''], [''广州'', ''101.3'', ''119.4'', ''120.0''], [''深圳'', ''102.0'', ''140.9'', ''145.5''], [''沈阳'', ''100.1'', ''101.4'', ''101.6''], ['''', '''', '''', '''']]

(2)逐行处理CSV格式数据:

 1 fo=open("city.csv","r")#打开命名为city的CSV文件
 2 ls=[]#定义一个空列表,将CSV中读取的文件放进列表
 3 for line in fo:
 4     line=line.replace("\n","")
 5     ls=line.split(",")
 6     lns=""
 7     for s in ls:
 8         lns+="{}\t".format(s)
 9     print(lns)
10 fo.close()

运行结果:

城市    环比    同比    定基    
北京    101.5    120.7    121.4    
上海    101.2    127.3    127.8    
广州    101.3    119.4    120.0    
深圳    102.0    140.9    145.5    
沈阳    100.1    101.4    101.6

(3)将一维数据写入CSV文件:

1 fo=open("city.csv","w")
2 ls=[''湖北'',''101.2'',''120.7'',''121.4'']
3 fo.write(",".join(ls)+"\n")
4 fo.close()

运行结果;

city.csv文件原有数据:

运行之后的数据:

(4)将二维数据写入CSV文件:

 1 fr=open("city1.csv","r")
 2 fw=open("city1out.csv","w")
 3 ls=[]
 4 for line in fr:#将CSV文件当中的二维数据读到列表当中去
 5     line=line.replace("\n","")
 6     ls.append(line.split(","))
 7 for i in range(len(ls)):#遍历列表变量计算百分数
 8     for j in range(len(ls[i])):
 9         if ls[i][j].replace(".","").isnumeric():
10             ls[i][j]="{:.2}%".format(float(ls[i][j])/100)
11 for row in ls:#将列表变量中的两位数据写入CSV文件当中去
12     print(row)
13     fw.write(",".join(row)+"\n")
14 fr.close()
15 fw.close()

运行结果:

city1文件数据与前两个例子的city文件的内容相同,city1out.csv文件为新建立的一个CSV文件。

 city1out.csv文件数据:

 

fgetcsv函数读取csv文件中文字符串的问题

fgetcsv函数读取csv文件中文字符串的问题

读取csv文件数据函数:

  1. function getData($file) {
  2. $arr = array();
  3. if(($handle = fopen($file,"r")) !== FALSE) {
  4. while(($data = fgetcsv($handle)) !== FALSE) {
  5. $tmp = array();
  6. foreach($data as $key=>$v) {
  7. $tmp[] = mb_convert_encoding($v,"UTF-8","gbk"); /*要将gbk码转为utf-8,否则会出现乱码*/
  8. }
  9. $arr[] = $tmp;
  10. }
  11. }
  12. return $arr;
  13. }
复制代码

发现读取的中文字符串为空....

解决方法:将fgetcsv函数换成自定义的_fgetcsv函数

  1. function _fgetcsv(&$handle, $length = null, $d = '','', $e = ''"'') {
  2. $d = preg_quote($d);
  3. $e = preg_quote($e);
  4. $_line = "";
  5. $eof=false;
  6. while ($eof != true) {
  7. $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
  8. $itemcnt = preg_match_all(''/'' . $e . ''/'', $_line, $dummy);
  9. if ($itemcnt % 2 == 0)
  10. $eof = true;
  11. }
  12. $_csv_line = preg_replace(''/(?: |[ ])?$/'', $d, trim($_line));
  13. $_csv_pattern = ''/('' . $e . ''[^'' . $e . '']*(?:'' . $e . $e . ''[^'' . $e . '']*)*'' . $e . ''|[^'' . $d . '']*)'' . $d . ''/'';
  14. preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
  15. $_csv_data = $_csv_matches[1];
  16. for ($_csv_i = 0; $_csv_i $_csv_data[$_csv_i] = preg_replace(''/^'' . $e . ''(.*)'' . $e . ''$/s'', ''$1'' , $_csv_data[$_csv_i]);
  17. $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
  18. }
  19. return empty ($_line) ? false : $_csv_data;
  20. }
复制代码


我们今天的关于使用C#读取CSV文件c#如何读取csv文件的分享就到这里,谢谢您的阅读,如果想了解更多关于C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件、c#怎么读取csv文件、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、fgetcsv函数读取csv文件中文字符串的问题的相关信息,可以在本站进行搜索。

本文标签: