You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm环境下根据行号删除CSV文件指定行的实现方法

C# WinForm 按行号删除CSV指定行实现方案

以下方案适配你的场景:CSV自带表头Sym,Size,Direction,Action,默认支持用户输入文件物理行号删除(即输入1对应表头行,输入2对应第一行业务数据,可根据需求调整行号映射逻辑)。

实现逻辑

  • 校验用户输入的行号合法性,确保为有效正整数,且不超过CSV文件的总行数
  • 一次性读取CSV所有行到内存集合中,该方式对小体积CSV执行效率更高,适合新手快速实现
  • 移除目标行(注意C#中集合索引从0开始,需将用户输入的1开头行号减1得到对应索引)
  • 将修改后的行集合覆盖写入原CSV文件
  • 重新加载CSV到DataGridView,实现界面数据同步

完整代码示例

先约定控件命名:

  • 行号输入文本框:txtRowNum
  • 删除触发按钮:btnDeleteRow
  • 展示数据的DataGridView:dataGridView1
  • 请将代码中的csvPath替换为你的CSV文件实际存储路径
private void btnDeleteRow_Click(object sender, EventArgs e)
{
    string csvPath = @"C:\你的文件路径\data.csv"; // 替换为实际CSV路径
    int targetRowNum;

    // 1. 校验输入是否为有效数字
    if (!int.TryParse(txtRowNum.Text.Trim(), out targetRowNum) || targetRowNum < 1)
    {
        MessageBox.Show("请输入有效的正整数行号!");
        return;
    }

    // 2. 读取CSV所有行
    List<string> allCsvLines = File.ReadAllLines(csvPath).ToList();

    // 3. 校验行号是否超出范围
    if (targetRowNum > allCsvLines.Count)
    {
        MessageBox.Show($"输入行号超出文件总行数,当前文件共{allCsvLines.Count}行!");
        return;
    }

    // 4. 移除目标行:用户输入行号是1开头,集合索引是0开头,所以减1
    // 如果你要删的是排除表头后的业务行号,比如输入1删第一行业务数据,这里改为 allCsvLines.RemoveAt(targetRowNum); 即可
    allCsvLines.RemoveAt(targetRowNum - 1);

    // 5. 写回CSV文件
    File.WriteAllLines(csvPath, allCsvLines);

    // 6. 重新加载DataGridView,和文件保持同步
    LoadCsvToDataGridView(); // 直接复用你之前把CSV加载到dataGridView的现有逻辑即可
    MessageBox.Show("删除成功!");
}

// 你之前已经实现的加载CSV到DataGridView的方法,这里仅做示例,可直接替换为你自己的逻辑
private void LoadCsvToDataGridView()
{
    string csvPath = @"C:\你的文件路径\data.csv";
    DataTable dt = new DataTable();
    // 读取表头
    string[] headers = File.ReadAllLines(csvPath)[0].Split(',');
    foreach (string header in headers)
    {
        dt.Columns.Add(header);
    }
    // 读取业务数据
    string[] rows = File.ReadAllLines(csvPath).Skip(1).ToArray();
    foreach (string row in rows)
    {
        if (!string.IsNullOrWhiteSpace(row))
        {
            dt.Rows.Add(row.Split(','));
        }
    }
    dataGridView1.DataSource = dt;
}

注意事项

  • 操作前建议提前备份CSV文件,避免误操作导致数据丢失
  • 如果你的CSV单字段内容包含逗号、换行符,需要用专门的CSV解析库处理,当前方案仅适合标准无特殊字符的CSV场景
  • 若CSV文件体积超过100M,建议改用逐行读写的方式避免内存占用过高,小体积CSV直接用当前方案即可

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:45:02