c#读取csv文件中的某一列的数据

news2024/9/24 13:18:03

chat8 (chat779.com)

上面试GPT-3.5,很好的浏览网站,输入问题,可得到答案。

问题1:c#如何在csv中读取某一列数据

解答方案:在 C#中,你可以使用File.ReadAllLines来读取CSV中的所有行,然后逐行解析每一行的列数据。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // 指定CSV文件的路径
        string csvFilePath = "path/to/your/file.csv";

        // 指定要读取的列号
        int targetColumnNumber = 2; // 例如,要读取第二列

        // 调用ReadCsvColumn方法,传入文件路径和目标列号
        string[] targetColumn = ReadCsvColumn(csvFilePath, targetColumnNumber);

        // 打印目标列的内容
        Console.WriteLine("Target Column:");
        Console.WriteLine(string.Join(Environment.NewLine, targetColumn));
    }

    static string[] ReadCsvColumn(string filePath, int columnNumber)
    {
        // 读取CSV文件的所有行
        string[] allLines = File.ReadAllLines(filePath);

        // 创建一个列表来存储目标列的数据
        var targetColumn = new List<string>();

        // 遍历每一行,解析目标列的数据
        foreach (var line in allLines)
        {
            // 使用逗号分隔符解析CSV行
            string[] columns = line.Split(',');

            // 确保目标列号在有效范围内
            if (columnNumber > 0 && columnNumber <= columns.Length)
            {
                // 获取目标列的数据并添加到列表中
                targetColumn.Add(columns[columnNumber - 1]);
            }
            else
            {
                // 列号无效,你可以选择抛出异常或者采取其他处理方式
                // 这里演示的是将空字符串添加到列表中
                targetColumn.Add(string.Empty);
            }
        }

        // 返回目标列的数据
        return targetColumn.ToArray();
    }
}

在这个例子中,ReadCsvColumn方法接受文件路径和目标列号作为参数,使用File.ReadAllLines读取整个CSV文件,然后遍历每一行,解析目标列的数据。请注意,这个例子使用逗号作为CSV文件的分隔符,你可能根据实际情况调整分割符。

同样,记得在实际应用中可能出现的异常,例如文件不存在、列号无效等。

现在分解上面示例的代码到项目中,调整了下:

 private void button3_Click(object sender, EventArgs e)
 {
     // 制定CSV文件的路径 // 修改了地址,读取了自己的csv文件
     string csvFilePath = "F:\\读取csv\\110811.csv";


     //指定要读取的列号 //修改了自己要读去的列号
     int targetColumnNumber = 7; // 例如要读取第7列


     // 调用ReadCsvColumn方法,传入文件路径和目标列号
     string[] targetColumn = ReadCsvColumn(csvFilePath, targetColumnNumber);


     // 打印目标列的内容
     Console.WriteLine("Target Column:");
     Console.WriteLine(string.Join(Environment.NewLine, targetColumn));
     
     // 将读到的列的内容 //增加了将目标列号第一行读入到文本框中
     richTextBox2.Text = targetColumn[1];
 }

将ReadCsvColumn方法函数未作修改,直接复制到窗体代码中,注意,不是复制到按钮代码中。

static string[] ReadCsvColumn(string filePath, int columnNumber)
{
    // 读取CSV文件的所有行 // 这里的ReadAllLines改为System.IO.File.ReadAllLines,否则
//会报错,并且增加Encoding.GetEncoding("GBK")来防止读取的中文数据是错误码!!!
    string[] allLines = System.IO.File.ReadAllLines(filePath, Encoding.GetEncoding("GBK"));

    // 创建一个列表来存储目标列的数据
    var targetColumn = new List<string>();

    // 遍历每一行,解析目标列的数据
    foreach (var line in allLines)
    {
        //使用逗号分隔符解析CSV行
        string[] columns = line.Split(',');

        // 确保目标列号在有效范围内
        if (columnNumber > 0 && columnNumber <= columns.Length)
        {
            // 获取目标列的数据并添加到列表中
            targetColumn.Add(columns[columnNumber - 1]);
        }
        else
        {
            // 列号无效,你可以选择抛出异常或者采取其他处理方式
            // 这里演示的是将空字符串添加到列表中
            targetColumn.Add(string.Empty);
        }
    }

    // 返回目标列的数据
    return targetColumn.ToArray();
}

这样就可以实现将一个csv文件中的数据读取到winform窗体中的作用。

代码详解:

C#中的var关键字,转载于http://t.csdnimg
.cn/TdUca

var是3.5新出的一个定义变量的类型,其实也就是弱化类型的定义,var可代替任何类型,编译器会根据上下文来判断你到底是想用什么类型的,至于什么情况下用到var,当无法确定自己将用的是什么类型,就可以使用var,类似object但是效率比object高。

举个例子:假如现在遍历一个数组,此时我们不知道数组中存储的数据类型是什么,此时使用var关键字就合适。

或者通俗的讲:var可以理解为匿名类型,我们可以认为它是一个声明变量的占位符,它主要用于在声明变量时,无法确定数据类型时使用。

使用var定义变量的特点

1.在定义变量的时候,必须先给值,不能为null,也不能只定义不给值,必须是var s = "abcd"的形式,而不能是如下形式:var s; s = "abcd";

2. 一旦初始化完成,就不能再给变量赋与初始化值类型不同的值了。

3. var要求是局部变量,无法使用var来定义一个全局变量,只能定义在方法的内部(因为预先不可知,所以预先不可置)。

4. 使用var定义变量和object不同,他在效率和使用强类型方式定义变量完全一样。

5.不能用来定义函数的签名,包括返回值,参数类别。

new List<string>()

创建一个空列表

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

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

相关文章

HCIA-HarmonyOS设备开发认证V2.0-3.轻量系统内核基础

目录 一、前言二、LiteOS-M系统概述三、内核框架3.1、CMSIS 和 POSIX 整体架构3.2、LiteOS-M内核启动流程 四、内核基础4.1、任务管理4.2、时间管理(待续)4.3、中断管理(待续)4.4、软件定时器(待续) 五、内存管理5.1、静态内存(待续)5.2、动态内存(待续) 六、内核通信机制6.1、…

深度学习(15)--PyTorch构建卷积神经网络

目录 一.PyTorch构建卷积神经网络(CNN)详细流程 二.graphviz torchviz使PyTorch网络可视化 2.1.可视化经典网络vgg16 2.2.可视化自己定义的网络 一.PyTorch构建卷积神经网络(CNN)详细流程 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学…

每日一题 力扣993.二叉树的堂兄弟节点

993. 二叉树的堂兄弟节点 题目描述&#xff1a; 在二叉树中&#xff0c;根节点位于深度 0 处&#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同&#xff0c;但 父节点不同 &#xff0c;则它们是一对堂兄弟节点。 我们给出了具有唯一值…

实现RBAC

一、菜单权限的控制 左边侧边栏的菜单显示是来自于userlnfoStore.menuRoutes&#xff0c;当前进行打印&#xff0c;得到的内容其实就是staticRoutes静态路由表定义的路由数组对象;最终staticRoutes(静态路由)、allAsyncRoutes(动态路由)、anyRoute(任意路由)需要进行一次整合、…

spring boot和spring cloud项目中配置文件application和bootstrap中的值与对应的配置类绑定处理

在前面的文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136065211 加载完文件转换为 Environment 中对应的值之后&#xff0c;接下来需要将对应的值与对应的配置类进行绑定&#xff0c;方便对应的组件取值处理接下来的操作。 对应的配置值与配置类绑定通过 Con…

单片机的认识

单片机的定义 先简单理解为&#xff1a; 在一片集成电路芯片上集成了微处理器&#xff08;CPU &#xff09;存储器&#xff08;ROM和RAM&#xff09;、I/O 接口电路&#xff0c;构成单芯片微型计算机&#xff0c;即为单片机。 把组成微型计算机的控制器、运算器、存储器、输…

MQTT 服务器(emqx)搭建及使用

推荐阅读&#xff1a; MQTT 服务器(emqx)搭建及使用 - 哔哩哔哩 (bilibili.com) 一、EMQX 服务器搭建 1、下载EMQX https://www.emqx.com/zh/try?productbroker 官方中文手册&#xff1a; EMQX Docs 2、安装使用 1、该软件为绿色免安装版本&#xff0c;解压缩后即安装完…

重写Sylar基于协程的服务器(7、TcpServer HttpServer的设计与实现)

重写Sylar基于协程的服务器&#xff08;7、TcpServer & HttpServer的设计与实现&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务…

高考志愿填报模拟系统的功能和技术总结

一、金秋志愿高考志愿填报系统主要功能&#xff1a; 用户注册与登录&#xff1a;允许学生和家长注册账号&#xff0c;使用注册的账号登录系统。 个人信息管理&#xff1a;允许用户查看、修改个人信息&#xff0c;如姓名、性别、联系方式等。 高考成绩输入&#xff1a;学生输…

删除和清空Hive外部表数据

外部表和内部表区别 未被external修饰的是内部表&#xff08;managed table&#xff09;&#xff0c;被external修饰的为外部表&#xff08;external table&#xff09;&#xff1b; 区别&#xff1a; 内部表数据由Hive自身管理&#xff0c;外部表数据由HDFS管理&#xff1b; …

STM32——LCD(1)认识

目录 一、初识LCD 1. LCD介绍 2. 显示器的分类 3. 像素 4. LED和OLED显示器 5. 显示器的基本参数 &#xff08;1&#xff09;像素 &#xff08;2&#xff09;分辨率 &#xff08;3&#xff09;色彩深度 &#xff08;4&#xff09;显示器尺寸 &#xff08;5&#xff…

Redis篇之缓存雪崩

一、什么的缓存雪崩 缓存雪崩&#xff1a;在同一时间段大量的缓存key同时失效或者redis服务宕机&#xff0c;导致大量请求到达数据库给数据库带来巨大压力&#xff0c;可能导致数据库崩了。 二、应该怎么解决 1.给不同的Key的TTL添加随机值 2.利用Redis集群提高服务的可用性 3…

夜天之书 #95 GreptimeDB 社群观察报告

GreptimeDB 是格睿科技&#xff08;Greptime&#xff09;公司研发的一款开源时序数据库&#xff0c;其源代码[1]在 GitHub 平台公开发布。 https://github.com/GreptimeTeam/greptimedb 我从 2022 年开始知道有 GreptimeDB 这个项目。2023 年&#xff0c;我注意到他们的 Commun…

IntelliJ IDEA 2023.3发布,AI 助手出世,新特性杀麻了!!

目录 关键亮点 对 Java 21 功能的完全支持 调试器中的 Run to Cursor&#xff08;运行到光标)嵌入选项 带有编辑操作的浮动工具栏 用户体验优化 Default&#xff08;默认&#xff09;工具窗口布局选项 默认颜色编码编辑器标签页 适用于 macOS 的新产品图标 Speed Sear…

【buuctf--来首歌吧】

用 Audacity 打开&#xff0c;左声道部分可以放大&#xff0c;可以按照长短转换成摩斯密码&#xff0c;放大后&#xff1a; ..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- -…

async 与 await(JavaScript)

目录捏 前言一、async二、await三、使用方法总结 前言 async / await 是 ES2017(ES8) 提出的基于 Promise 解决异步的最终方案。上一篇文章介绍了 回调地狱 与 Promise&#xff08;JavaScript&#xff09;&#xff0c;因为 Promise 的编程模型依然充斥着大量的 then 方法&#…

canvas绘制横竖坐标轴(带有箭头和刻度)

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

Redis的数据类型Hash使用场景实战

Redis的数据类型Hash使用场景 常见面试题&#xff1a;redis在你们项目中是怎么用的&#xff0c;除了String数据类型还使用什么数据类型&#xff1f; 怎么保证缓存和数据一致性等问题… Hash模型使用场景 知识回顾&#xff1a; redisTemplate.opsForHash() 方法是 Redis 的 …

基于全连接神经网络模型的手写数字识别

基于全连接神经网络模型的手写数字识别 一. 前言二. 设计目的及任务描述2.1 设计目的2.2 设计任务 三. 神经网络模型3.1 全连接神经网络模型方案3.2 全连接神经网络模型训练过程3.3 全连接神经网络模型测试 四. 程序设计 一. 前言 手写数字识别要求利用MNIST数据集里的70000张…

Multisim14.0仿真(五十五)汽车转向灯设计

一、功能描述&#xff1a; 左转向&#xff1a;左侧指示灯循环依次闪亮&#xff1b; 右转向&#xff1a;右侧指示灯循环依次闪亮&#xff1b; 刹车&#xff1a; 所有灯常亮&#xff1b; 正常&#xff1a; 所有灯熄灭。 二、主要芯片&#xff1a; 74LS161D 74LS04D 74…