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

C# Visual Studio从3个RichTextBox提取内容生成CSV文件的实现方法

C# 实现多RichTextBox同序行拼接CSV方案

直接替换你现有逻辑即可,以下是可运行的完整实现:

var date = DateTime.Today.ToString("yyyy-MM-dd");
var csv = new StringBuilder();
// 写入CSV表头
csv.AppendLine("FirstName,LastName,Country");

// 取出三个RichTextBox的行数据数组
string[] firstNames = rtextbox_firstname.Lines;
string[] surNames = rtextbox_surname.Lines;
string[] countries = rtextbox_country.Lines;

// 取三个数组的最大行数作为循环上限,避免行数不一致导致漏处理
int maxLines = Math.Max(Math.Max(firstNames.Length, surNames.Length), countries.Length);

for (int i = 0; i < maxLines; i++)
{
    // 按索引取对应行内容,索引超出数组长度时默认返回空字符串
    string firstName = i < firstNames.Length ? EscapeCsvField(firstNames[i].Trim()) : "";
    string surName = i < surNames.Length ? EscapeCsvField(surNames[i].Trim()) : "";
    string country = i < countries.Length ? EscapeCsvField(countries[i].Trim()) : "";
    
    // 拼接为单条CSV行写入StringBuilder
    csv.AppendLine($"{firstName},{surName},{country}");
}

// 自动获取桌面路径拼接文件地址,避免硬编码适配不同设备
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), $"run this _{date}.csv");
File.WriteAllText(path, csv.ToString(), Encoding.UTF8);

新增CSV字段转义方法,避免内容包含逗号、引号、换行时打乱CSV列结构:

/// <summary>
/// 转义CSV特殊字符
/// </summary>
private string EscapeCsvField(string field)
{
    if (string.IsNullOrEmpty(field)) return string.Empty;
    // 包含特殊字符的字段需要用双引号包裹,内部双引号替换为两个双引号做转义
    if (field.Contains(',') || field.Contains('"') || field.Contains('\n') || field.Contains('\r'))
    {
        return $"\"{field.Replace("\"", "\"\"")}\"";
    }
    return field;
}

实现说明

  • 你原有代码中声明的excelFile变量未被使用,如果不需要操作Excel文件可以直接删除
  • 用Path.Combine拼接路径,避免硬编码盘符、用户名导致的跨设备兼容性问题
  • 取最大行数做循环边界,三个控件行数不一致时,缺失的字段会自动填充空字符串不会报错
  • 用File.WriteAllText代替AppendAllText,避免重复运行程序时内容追加到旧文件末尾,如果需要追加写入可以改回AppendAllText

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:09:01