小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. net编程
  3. 经验技巧
  4. 正文

net中c#教程 不同格式的csv文件如何导入?

2022年11月13日 208点热度 0人点赞 0条评论

无论你做什么软件,都需要和数据打交道,也肯定会把数据导入或导出,其中就包括对CSV文件的操作。比如某个平台的数据是CSV文件,我们需要把它导入到程序里。今天就实现这个需求,我们支持2种CSV文件格式。

目录

  • CSV文件格式1
  • CSV文件格式2

CSV文件格式1

这种格式是文本文件,每行一条数据,列之间用逗号表示,列值还会出现双引号。这种如果直接循环读取文本文件也可以,也可以用现成的类实现。在Nuget中搜索:CSVHelper,找到后引用进来。

引用csvhelper类库

CSV文件格式

Make,Model,Type,Year,Price,Comment
"Toyota1",Corolla1,Car1,1990,2000.99,"Comment1 with a,line break and "" quotes"
"Toyota2",Corolla2,Car2,1991,2001.99,"Comment2 with a,line break and "" quotes"
"Toyota3",Corolla3,Car3,1992,2002.99,"Comment3 with a,line break and "" quotes"
"Toyota4",Corolla4,Car4,1993,2003.99,"Comment4 with a,line break and "" quotes"

实现代码
还是比较简单的,感觉像json字符串转Model类

string csvFile1 = @"d:\test-csv.txt";
using (TextReader reader1 = new StreamReader(csvFile1))
{
    CultureInfo culture = CultureInfo.CurrentCulture;

    var csvReader1 = new CsvReader(reader1, culture);
    var records = csvReader1.GetRecords<AutoMobileModel>().ToList();

    foreach (var r in records)
    {
        Console.WriteLine(r.ToString());
    }
}

CSV文件格式2

这种格式,类似于Excel文件,需要用Office打开。这种格式如果再用上面的类是解析不了的,这里引用另一个组件,它就是Aspose.Cells组件。相当好用的,除解析Excel文件外,还能解析CSV文件

引用aspose.cells组件

CSV文件格式

csv2示例文档

实现代码

string csvFile2 = @"d:\test-csv.csv";
Aspose.Cells.Workbook wb = new Aspose.Cells.Workbook(csvFile2);
Aspose.Cells.Worksheet ws = wb.Worksheets[0];

DataTable dtData = new DataTable();

//生成DataTable对象表结构,即获取第一行单元格值
int colCount = ws.Cells.MaxColumn + 1;
for (int j = 0; j < colCount; j++)
{
    object colName = ws.Cells[0, j].Value;
    if (StringHelper.ObjectIsNullOrEmpty(colName))
    {
        colName = "ColName" + (j + 1).ToString();
    }

    dtData.Columns.Add(colName.ToString().Trim(), typeof(string));
}

//填充数据
int rowCount = ws.Cells.MaxDataRow + 1;
if (rowCount > 0)
{
    for (int m = 1; m < rowCount; m++)
    {
        DataRow dataRow = dtData.NewRow();
        for (int n = 0; n < colCount; n++)
        {
            object cellValue = ws.Cells[m, n].Value;
            dataRow[n] = cellValue;
        }
        dtData.Rows.Add(dataRow);
    }
}

int dtRowCount = dtData.Rows.Count;
Console.WriteLine("获取到的行个数:" + dtRowCount);

 

不同格式就用不同代码搞定,没有什么是一段代码解决不了的,如果有就两段

 

相关阅读

net中c#教程 file文件的常用操作

标签: c#教程 CSV文件导入 CSV文件读取 net教程
最后更新:2022年11月13日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2