C# CSV文件处理程序开发指南
这是一个Windows平台的CSV文件处理程序,采用简洁直观的界面设计,主要功能包括CSV文件的读取、创建和持续写入操作。
1.界面元素说明
- 开发工具:Visual Studio 2022(.NET Framework 4.7.2+)环境搭建参考博客:【VS2019安装+QT配置】
- 核心类库:
System.Net.Sockets.UdpClient
1.1. 标题栏
- 显示内容:
Form1
- 位置:窗口顶部
- 功能:显示应用程序名称
1.2. 主显示区域
- 外观:大型白色矩形区域
- 位置:界面中央
- 功能:显示CSV文件内容或操作结果
2.完整程序代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace C_sharp_CSV
{
public partial class Form1 : Form
{
private string currentCsvFilePath = string.Empty;
private bool isFirstWrite = true;
public Form1()
{
InitializeComponent();
}
// 读取CSV文件
private void read_csv_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "CSV文件 (*.csv)|*.csv|所有文件 (*.*)|*.*",
Title = "选择CSV文件"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
currentCsvFilePath = openFileDialog.FileName;
try
{
richTextBoxData.Text = File.ReadAllText(openFileDialog.FileName);
}
catch (Exception ex)
{
MessageBox.Show($"读取错误: {ex.Message}", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
// 新建CSV文件
private void save_csv_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Filter = "CSV文件 (*.csv)|*.csv|所有文件 (*.*)|*.*",
Title = "保存CSV文件",
DefaultExt = "csv"
};
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
currentCsvFilePath = saveFileDialog.FileName;
isFirstWrite = true;
List<double> dataList = GetInputData();
SaveDataAsCsv(dataList, true);
}
catch (Exception ex)
{
MessageBox.Show($"保存错误: {ex.Message}", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
// 持续写入数据
private void write_continue_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(currentCsvFilePath))
{
MessageBox.Show("请先创建CSV文件", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
try
{
List<double> dataList = GetInputData();
SaveDataAsCsv(dataList);
}
catch (FormatException)
{
MessageBox.Show("请输入有效数值", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
MessageBox.Show($"写入错误: {ex.Message}", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 获取输入数据
private List<double> GetInputData()
{
return new List<double>
{
double.Parse(textBoxData1.Text),
double.Parse(textBoxData2.Text),
double.Parse(textBoxData3.Text),
double.Parse(textBoxData4.Text)
};
}
// 保存数据到CSV
private void SaveDataAsCsv(List<double> data, bool isSaveButtonClick = false)
{
try
{
if ((isSaveButtonClick || isFirstWrite) && !File.Exists(currentCsvFilePath))
{
File.WriteAllText(currentCsvFilePath, "time,Value1,Value2,Value3,Value4\n");
}
File.AppendAllText(currentCsvFilePath,
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff},{data[0]},{data[1]},{data[2]},{data[3]}\n");
isFirstWrite = false;
}
catch (Exception ex)
{
throw new Exception($"文件操作失败: {ex.Message}");
}
}
}
}
3.功能说明
3.1. 核心功能
- 读取CSV:打开并显示现有CSV文件内容
- 新建CSV:创建新CSV文件并写入初始数据
- 持续写入:向现有文件追加新数据
3.2. 关键技术点
- 使用
File
类进行文件操作 - 采用
OpenFileDialog
和SaveFileDialog
实现文件选择 - 自动生成时间戳记录数据写入时间
- 智能判断是否需要写入表头
3.使用教程
-
准备数据:
- 在四个输入框中输入数值数据
-
新建文件:
-
持续写入:
- 修改输入框数值
- 点击"持续写入"按钮追加数据
-
读取文件:
- 点击"读取.csv"查看已有文件内容
- 点击"读取.csv"查看已有文件内容
扩展建议
-
数据验证:
// 示例:增强数据验证 if(!double.TryParse(textBox1.Text, out double value)) { MessageBox.Show("请输入有效数字"); return; }
-
界面优化:
• 添加数据表格显示• 实现实时数据可视化
-
性能优化:
• 对于大数据量采用批量写入• 添加进度指示器
常见问题解答
Q: 为什么持续写入时需要先新建文件?
A: 程序需要知道文件保存位置,新建文件操作会设置文件路径。
Q: 时间戳格式可以修改吗?
A: 可以,修改SaveDataAsCsv
方法中的日期格式字符串即可。
Q: 如何增加更多数据列?
A: 1. 添加更多输入框
2. 修改GetInputData
方法
3. 更新表头字符串
提示:本程序适合传感器数据记录、实验数据采集等场景,可根据实际需求灵活调整。