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

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>()

创建一个空列表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习---概率图模型(隐马尔可夫模型、马尔可夫随机场、条件随机场)

1. 隐马尔可夫模型 机器学习最重要的任务是根据已观察到的证据&#xff08;例如训练样本&#xff09;对感兴趣的未知变量&#xff08;例如类别标 记&#xff09;进行估计和推测。概率模型&#xff08;probabilistic model&#xff09;提供了一种描述框架&#xff0c;将描述任…

网络选择流程分析(首选网络类型切换流程)

首先是界面,我在此平台的界面如下: 对应的入口源码位置在Settings的UniEnabledNetworkModePreferenceController中,当然其他平台可能在PreferredNetworkModePreferenceController中,流程上都是大同小异 然后点击切换按钮会调用到UniEnabledNetworkModePreferenceControlle…

智算中心建设主流加速卡选型策略

智算中心建设主流加速卡选型对比 —— 加速卡H800、A800、L40S、***B 一、加速卡基本性能比较 序号比较项H800A800L40S某国产NPU&#xff08;本文简称“nB”&#xff09; 1 加速卡类型 GPU GPU GPU NPU 2 供应商 英伟达 英伟达 英伟达 - 3 FP32&#xff08;TFLO…

MySQL查询优化技巧和10个案例展示

优化MySQL查询的实战技巧&#xff1a; **避免使用SELECT ***&#xff1a;只获取需要的列&#xff0c;这样可以减少数据传输量&#xff0c;提高查询效率。使用索引&#xff1a;为查询频繁的列创建索引&#xff0c;可以显著提高查询速度。但请注意&#xff0c;索引并非万能&…

Android中设置Toast.setGravity()了后没有效果

当设置 toast.setGravity()后&#xff0c;弹窗依旧从原来的位置弹出&#xff0c;不按设置方向弹出 类似以下代码&#xff1a; var toast Toast.makeText(this, R.string.ture_toast, Toast.LENGTH_SHORT)toast.setGravity(Gravity.TOP, 0, 0)//设置toast的弹出方向为屏幕顶部…

绕过安全狗

本节我们想要绕过的安全狗版本为v4.023957 &#xff0c;它是网站安全狗的Apache版。 首先搭建环境。渗透环境选用DVWA漏洞集成环境&#xff0c;下载地址 为http://www.dvwa.co.uk/ 。DVWA是一款集成的渗透测试演练环境&#xff0c;当刚刚入门 并且找不到合适的靶机时&#xff…

Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制

在数字化发展的浪潮中&#xff0c;自动化数据库变更管理成为提升产品上线效率、降低人为失误风险的关键工具&#xff0c;同时促进流程的一致性与标准化&#xff0c;确保合规性和变更的可追溯性。近日&#xff0c;数据库 DevOps 团队协同管理工具 Bytebase 签约欧洲交通数据管理…

H12-821_134

134.如图所示&#xff0c;RED在入方向调用了ip as-path-filter1&#xff0c;那么路由10.0.0.0/24会从路径_________被RE_D学习。(请填写1或2) 答案&#xff1a;1 注释&#xff1a; ip as-path-filter 1解释&#xff1a; ip as-path-filter 1 deny _300$ 拒绝AS300始发的路由&…

图像异或加密、解密的实现

很多论文提到了从左上角开始做异或,逐行推导得到结果。 解密过程是加密的逆过程。 先看其基本方法: 参考文献: A Chaotic System Based Image Encryption Scheme with Identical Encryption and Decryption Algorithm 大多数论文都用了这个思路,我们使用MATLAB实现代码…

ASUS华硕灵耀X双屏UX8402V工厂模式原厂Win11.22H2系统安装包,含WinRE恢复出厂时开箱状态自带预装OEM系统

适用型号&#xff1a;UX8402VV、UX8402VU 链接&#xff1a;https://pan.baidu.com/s/1D7tJshKTNFYO4YyzKX0ppQ?pwd3saf 提取码&#xff1a;3saf Zenbook Pro灵耀X笔记本电脑原装出厂Windows11系统 带有ASUS RECOVERY恢复功能、自带面部识别&#xff0c;声卡&#xff0c;网…

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 PySpark SQL 基础 PySpark SQL与Hive的异同 Hive和Spark 均是:“分…

SpringBoot-基础篇03

之前搭建了整个开发环境实现了登录注册&#xff0c;springBoot整合mybatis完成增删改查&#xff0c;今天完成分页查询&#xff0c;使用阿里云oss存储照片等资源&#xff0c;后期会尝试自己搭建分布式文件系统来实现。 一&#xff0c;SpringBootMybatis完成分页查询 1&#xff…

计算机项目SpringBoot项目 办公小程序开发

从零构建后端项目、利用UNI-APP创建移动端项目 实现注册与登陆、人脸考勤签到、实现系统通知模块 实现会议管理功能、完成在线视频会议功能、 发布Emos在线办公系统 项目分享&#xff1a; SpringBoot项目 办公小程序开发https://pan.baidu.com/s/1sYPLOAMtaopJCFHAWDa2xQ?…

幻兽帕鲁mac可以玩吗?

《幻兽帕鲁》&#xff08;英文&#xff1a;Palworld&#xff09;是一款近期在 Steam 爆红的动作冒险生存游戏&#xff0c;游戏设置在一个居住着「帕鲁」的开放世界中&#xff0c;玩家可以战斗并捕捉帕鲁&#xff0c;也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…

基于CEVA DSP BX2的架构分析(五)- 标量处理单元(二)

目录 5.3.5 结果饱和度 5.3.4 乘法饱和度 5.3.5 乘法后移位 5.3.6 标量浮点支持 5.3.7 复数支持 5.3.7.1 ​​​​​​​​​​​​​​16位复杂算法支持 ​​​​​​​5.3.7.2 32位复杂算法支持 5.4 SPU算术标志 ​​​​​​​5.4.1 进位标志 ​​​​​​​5.4.2 溢出标志 …

docker部署docker管理工具easydockerweb

重要提示 功能比较少,建议体验一下即可 安装 docker run -it -d -p 10041:3000 -e EDW_USERNAMEadmin -e EDW_PASSWORDadmin -v /var/run/docker.sock:/var/run/docker.sock qfdk/easydockerweb 使用 概览 镜像管理 容器管理

Python命令行工具库之argcomplete使用详解

概要 命令行工具是开发者和系统管理员的得力助手&#xff0c;但随着命令行选项的增多&#xff0c;用户可能会感到困惑。Python 中的 argcomplete 库可以帮助轻松地为命令行工具添加自动补全功能&#xff0c;提高用户体验。本文将介绍如何使用 Python argcomplete 库实现命令行…

[嵌入式AI从0开始到入土]13_orangepi aipro开箱测评

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

好看的安全跳转单页html源码

好看的安全跳转单页html源码,效果如下 代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <!--[if IE 8]><style>.ie8 .alert-circle,.ie8 .alert-footer{display:none}.ie8 .alert-box{padding-top:…

基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)

核心代码 <template></template> <script> export default {created() {//监听长按快捷键addEventListener("keydown", this.keydown);addEventListener("keyup", this.keyup);},destroyed(d) {//移除长按快捷键removeEventListener(&…