当前位置: 首页 > wzjs >正文

汕头企业做网站三亚做网站

汕头企业做网站,三亚做网站,WordPress更改数据库连接,建行手机银行appC# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原) 文章目录 C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)一、上位机开发中的CSV应用背景二、CSV读写实战教学1. 基本对…

在这里插入图片描述

C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)

文章目录

  • C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)
    • 一、上位机开发中的CSV应用背景
    • 二、CSV读写实战教学
      • 1. 基本对象序列化
      • 2. 多数据类型处理
      • 3. 集合类型序列化
      • 4. 二进制数据处理
      • 5. 自定义类型支持
      • 6. 表头自定义
      • 7. 属性忽略
      • 8. 大文件完整读写测试
    • 三、安装部署指南
    • 四、感谢阅读

一、上位机开发中的CSV应用背景

在工业自动化上位机开发中,CSV格式数据的生成与解析是常见的核心需求:

  1. 用于设备运行数据的长期记录
  2. 实现与其他系统(如MES/ERP)的数据交换
  3. 生成可人工查阅的生产报表
  4. 调试阶段数据快照保存

传统方式通过硬编码拼接字符串效率低下,且难以处理复杂数据结构。本文将讲解如何使用CsvSerializer类轻松实现CSV文件的生成和读取。


二、CSV读写实战教学

1. 基本对象序列化

/// <summary>
/// 基本学生信息类
/// </summary>
public class SimpleStudent
{public int Id { get; set; }public string Name { get; set; }
}var students = new List<SimpleStudent>
{new SimpleStudent { Id = 1001, Name = "张三" },new SimpleStudent { Id = 1002, Name = "李四" }
};var csv = new CsvSerializer().ConvertToCsvLines(students);
File.WriteAllLines("simple_students.csv", csv);

2. 多数据类型处理

/// <summary>
/// 复合数据类型演示类
/// </summary>
public class DataTypeDemo
{public DateTime RecordTime { get; set; }   // 时间类型public float Temperature { get; set; }     // 精确数值public bool IsValid { get; set; }          // 布尔类型
}var data = new DataTypeDemo
{RecordTime = DateTime.Now,Temperature = 25.36f,IsValid = true
};var serializer = new CsvSerializer();
File.WriteAllLines("data_types.csv", serializer.ConvertToCsvLines(new[] { data }));

3. 集合类型序列化

public class CollectionDemo
{public int[] SensorValues { get; set; }          // 整型数组public List<double> Voltages { get; set; }       // 泛型列表
}var demo = new CollectionDemo
{SensorValues = new[] { 100, 200, 300 },Voltages = new List<double> { 3.3, 5.0, 12.0 }
};// 生成CSV时集合元素自动以分号分隔
var csvLines = new CsvSerializer().ConvertToCsvLines(new[] { demo });

4. 二进制数据处理

public class BinaryData
{public byte[] ImageBuffer { get; set; }  // Base64编码存储
}var data = new BinaryData
{ImageBuffer = File.ReadAllBytes("logo.png")
};// 生成文件提示:大量二进制数据存入单行可能导致Excel无法打开
File.WriteAllLines("data_binary.csv", serializer.ConvertToCsvLines(new[] { data }));

5. 自定义类型支持

// 定义新的结构体类型
public struct Coordinate
{public double X;public double Y;
}// 测试类型
public class CustomTypeDemo 
{ public Coordinate Position { get; set; } 
}// 注册自定义转换器
var serializer = new CsvSerializer();
serializer.Converters.Add(typeof(Coordinate), new StringConverter<Coordinate>(str =>{var parts = str.Split('|');return new Coordinate { X = double.Parse(parts[0]), Y = double.Parse(parts[1]) };},c => $"{c.X}|{c.Y}"
));

6. 表头自定义

public class MachineData
{[CsvColumn("Current Speed (m/min)")]public double Speed { get; set; }[CsvColumn("Working Temp (°C)")]public double Temperature { get; set; }
}// 生成的CSV标题类似:
// Current Speed (m/min),Working Temp (°C)

7. 属性忽略

public class SecurityData
{public string PublicInfo { get; set; }[CsvIgnore]public string SecretKey { get; set; }  // 不会出现在CSV中
}

8. 大文件完整读写测试

在这里插入图片描述

生成用于测试的随机学生信息表CSV文件:

        /// <summary>/// 生成学生信息表/// </summary>public void GenerateTestCsvFile(){var serializer = new CsvSerializer();const int dataSize = 1000;var random = new Random();var students = Enumerable.Range(0, dataSize).Select(_ => GenerateRandomStudent(random)).ToList();var csv = serializer.ConvertToCsvLines(students);File.WriteAllLines("test_data.csv", csv);// 打开文件夹Process.Start("explorer.exe", "/select," + Path.GetFullPath("test_data.csv"));Console.WriteLine($"已生成测试数据文件:{Path.GetFullPath("test_data.csv")}");}/// <summary>/// 生成随机学生数据/// </summary>private static Student GenerateRandomStudent(Random random){return new Student{// 基础类型Id = random.Next(10000, 99999),Name = $"Student_{random.Next(1, 1000)}",GPA = Math.Round(random.NextDouble() * 4.0, 2),// 结构体类型Location = new Point(random.Next(0, 100), random.Next(0, 100)),ClassSize = new Size(random.Next(30, 60), random.Next(20, 40)),// 集合类型Marks = Enumerable.Range(0, 5).Select(_ => random.Next(60, 100)).ToArray(),Courses = new List<string>{$"Course_{random.Next(100, 999)}",$"Course_{random.Next(100, 999)}",$"Course_{random.Next(100, 999)}"},// 特殊类型Grade = (char)('A' + random.Next(0, 5))};}/// <summary>/// 测试用学生类(覆盖8种不同数据类型)/// </summary>private class Student{// 基础值类型public int Id { get; set; }// 字符串类型public string Name { get; set; }// 浮点类型public double GPA { get; set; }// 结构体类型(Point)public Point Location { get; set; }// 结构体类型(Size)public Size ClassSize { get; set; }// 数组类型public int[] Marks { get; set; }// 泛型集合public List<string> Courses { get; set; }// 字符类型public char Grade { get; set; }}

读取CSV文件,还原成对象数组:

// 读取还原数据
var serializer = new CsvSerializer();
var loadedData = serializer.ConvertFromCsvLines<Student>(File.ReadAllLines("test_data.csv"));

三、安装部署指南

通过NuGet包管理器安装:
在这里插入图片描述
通过NuGet包管理器执行:

Install-Package STTech.CodePlus

或使用.NET CLI:

dotnet add package STTech.CodePlus

四、感谢阅读

感谢各位读者耐心阅读,本库将持续迭代工业领域实用组件。如有建议可评论区留言,期待您的使用反馈!

http://www.dtcms.com/wzjs/781067.html

相关文章:

  • 如何制作旅游网站建材网站建设公司
  • 二级域名网站可以做关键词优化吗加快政务网站建设
  • 个人网站制作的主要内容婚纱网站页面设计
  • 宁波网站设计哪家公司好2022最新的旅游资讯
  • 中文单页面网站模板免费下载目前做网站框架
  • 顺德网站建设公司信息网站开发要先买服务器吗
  • 门户网站建设工作情况汇报牡丹江网站推广
  • 吉林省建设工程质量监督站网站口碑好的邯郸网站建设
  • 淮南网官方网站谁做响应式网站
  • 房产网站排行榜上海百度搜索优化
  • 网络服务商机构郑州网站及优化
  • 网站建设技术支持祥云平台网站上推广游戏怎么做
  • 网站建设公司做网站需要注意什么软件下载类型网站怎么做
  • 如何做网站推广方法公司软文怎么写
  • 网站服务器问题高端大气的企业网站模板
  • 去哪儿网站开发简述网络营销策略
  • 个性化网站建设报价软件开发最新技术
  • 江苏齐力建设集团网站重庆做网站
  • 苏州网站建设sz sogou如何做网络营销推广工作
  • 上海制作网站陕西省信用建设官方网站
  • 国外科技网站欣赏苏州营销网站建设公司哪家好
  • 石家庄住房和城乡建设厅官方网站软件商城源码
  • 山西省城乡住房和建设厅网站做网站需要花费那方面的钱
  • 推进门户网站建设方案电子商务包括哪些内容
  • 廊坊哪里有做网站的中宁网站建设
  • 网络站点推广的方法有哪些中国义乌网
  • 学校网站建设栏目有哪些房子装修风格大全2021新款
  • 网站生成器怎么做国家工商注册查询系统官网
  • 福州网站建设印秀网址转化短链接
  • 做面包有关电影网站去西安需要隔离吗