C# :通用CSV导入与导出类(特殊字符处理)

B站影视 电影资讯 2025-04-19 14:29 1

摘要:这个版本完善了一下对特殊字符的处理,在现代应用程序中,CSV(Comma-Separated Values)格式是数据导入和导出的常见选择。这是由于Csv简单、易读、跨平台的特性。然而,当处理包含特殊字符的数据时,可能会出现一些复杂性。在这篇文章中,我们将设计

这个版本完善了一下对特殊字符的处理,在现代应用程序中,CSV(Comma-Separated Values)格式是数据导入和导出的常见选择。这是由于Csv简单、易读、跨平台的特性。然而,当处理包含特殊字符的数据时,可能会出现一些复杂性。在这篇文章中,我们将设计一个通用的C#类来处理CSV文件中的导入和导出,包括对特殊字符的处理。

我们将创建一个名为CsvHelper的类,其中包含用于导入和导出csv文件的功能。这些功能将确保数据中包含的特殊字符(如引号、逗号和换行符等)可以被正确地处理。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace AppCsv{public class CsvHelper{// 定义CSV分隔符和引用字符private const char Delimiter = ',';private const char Quote = '"';private const string DoubleQuote = "\"\"";// 导出数据到CSV文件public void ExportToCsv(string filePath, List data){using (var writer = new StreamWriter(filePath)){foreach (var row in data){var escapedRow = new List;foreach (var field in row){// 对每个字段进行转义escapedRow.Add(EscapeField(field));}// 将行写入文件writer.WriteLine(string.Join(Delimiter.ToString, escapedRow));}}}// 导入CSV文件数据public List ImportFromCsv(string filePath){var data = new List;using (var reader = new StreamReader(filePath)){string line;StringBuilder currentLine = new StringBuilder;bool insideQuote = false;// 按行读取文件while ((line = reader.ReadLine) != null){currentline.Append(line);// 如果当前行中的引用字符数目为奇数,说明字段还未结束if (line.Count(c => c == Quote) % 2 != 0){// 字段未结束,继续读取下一行currentLine.Append("\n");continue;}// 解析完整行var fields = ParseCsvLine(currentLine.ToString);data.Add(fields);currentLine.Clear;}// 添加剩余未处理的行if (currentLine.Length > 0){data.Add(ParseCsvLine(currentLine.ToString));}}return data;}// 解析CSV行并处理特殊字符private string ParseCsvLine(string csvLine){var fields = new List;var buffer = new StringBuilder;bool insideQuote = false;for (int i = 0; i

下面是如何使用CsvHelper类来导入和导出包含特殊字符的CSV数据。

private void btnExport_Click(object sender, EventArgs e){var data = new List{new { "ID", "Name", "Description" },new { "1", "Alice", "Software, Developer" },new { "2", "Bob", "\"The best\" Coder" },new { "3", "Charlie", "Line\nBreak" }};var csvHelper = new CsvHelper;csvHelper.ExportToCsv("output.csv", data);}private void btnImport_Click(object sender, EventArgs e){var csvHelper = new CsvHelper;var importedData = csvHelper.ImportFromCsv("output.csv");foreach (var row in importedData){txt.AppendText(string.Join(", ", row));txt.AppendText(System.Environment.NewLine);}}

通过CsvHelper类,我们可以轻松导入和导出CSV文件,同时正确处理数据中的特殊字符。无论是文件中的引号、逗号,还是换行符,该类都有能力正确地处理。当您需要在C#项目中处理CSV时,CsvHelper是一个通用且可靠的选择。希望这篇文章能够帮助您更好地理解和实现CSV文件的操作。

来源:小陈说科技

相关推荐