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

C#读写各类配置文件

目录

一、C#读写TXT文件

阶段一:认识TXT+最基础读写

学习目标

必学代码

1、引入命名空间

2、写入文本(覆盖)

3、读取文本

阶段二:追加内容+换行(上位机写日志必备)

学习目标

必学代码

1、追加(不覆盖)

2、实战:写时间日志

阶段三:按行读取(读取PLC地址表、配置文件)

学习目标

必学代码

阶段四:解决中文乱码(超级重要)

学习目标

必学代码

二、C#读取Config配置文件

阶段0:准备知识(必须懂)

阶段一:正式学习路线

第一步:创建配置文件

第二步:学习配置文件结构

第三步:引用命名空间及DLL

第四步:学习读取appSettings及connectionStrings

第五步:学习封装工具类(通用)

第六步:学习常见错误


一、C#读写TXT文件

阶段一:认识TXT+最基础读写

学习目标
  • 知道TXT用来做什么:日志、配置、参数存储、临时数据
  • 会用最简单的写入、读取
必学代码
1、引入命名空间
using System.IO;//文件操作必须
2、写入文本(覆盖)
//创建文件,如果存在则覆盖,默认路径为程序的当前工作目录 File.WriteAllText("Hello.txt","Hello World!");

运行效果

3、读取文本
//读取文本 string str = File.ReadAllText("Hello.txt"); MessageBox.Show(str);

运行效果

阶段二:追加内容+换行(上位机写日志必备)

学习目标
  • 不会覆盖原有内容
  • 会换行
必学代码
1、追加(不覆盖)
//追加内容,不覆盖 File.AppendAllText("Hello.txt", "\r\n我爱学上位机");

\r\n = 换行

运行效果

2、实战:写时间日志
//写时间日志 string log = "\r\n"+DateTime.Now + ":PLC连接成功"; File.AppendAllText("Hello.txt", log);

运行效果

阶段三:按行读取(读取PLC地址表、配置文件)

学习目标
  • 一行一行读文件(上位机最常用)
  • 跳过空行
必学代码
string[] lines = File.ReadAllLines("Hello.txt"); foreach (string line in lines) { if (string.IsNullOrWhiteSpace(line)) continue; MessageBox.Show(line); }

运行效果

阶段四:解决中文乱码(超级重要)

学习目标

TXT打开乱码->学会修复

必学代码

二、C#读取Config配置文件

阶段0:准备知识(必须懂)

  1. Config = 配置文件 ,后缀: .config
  2. 作用:存固定参数(IP、数据库、账号、路径)
  3. C#项目默认配置文件:
  • 桌面/服务项目 ---> App.config
  • 网站项目 --->Web.config

阶段一:正式学习路线

第一步:创建配置文件

  1. 右键项目->添加->新建项
  2. 选择:应用程序配置文件(App.config)
  3. 确定->自动生成App.config

第二步:学习配置文件结构

<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 存放普通配置:IP、间隔、参数 --> <appSettings> <add key="PLC_IP" value="192.168.0.1"/> <add key="Interval" value="500"/> </appSettings> <!-- 专门存放数据库连接 --> <connectionStrings> <add name="DB" value="Server=.;Database=TestDB;Uid=sa;Pwd=123456;"/> </connectionStrings> </configuration>

第三步:引用命名空间及DLL

必须引入System.Configuration.dll,否则找不到ConfigurationManager这个类

using System.Configuration;

第四步:学习读取appSettings及connectionStrings

//读取普通配置 string plcIP = ConfigurationManager.AppSettings["PLC_IP"]; //读数据库配置 string ConStr = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; MessageBox.Show(plcIP+"\r\n"+ConStr);

运行效果

第五步:学习封装工具类(通用)

public static class ConfigHelper { /// <summary> /// 根据键获取字符串 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetStr(string key) { return ConfigurationManager.AppSettings[key]; } /// <summary> /// 根据键获取整型数据 /// </summary> /// <param name="key"></param> /// <returns></returns> public static int GetInt(string key) { return int.Parse(ConfigurationManager.AppSettings[key]); } /// <summary> /// 获取数据库连接字符串 /// </summary> /// <param name="name"></param> /// <returns></returns> public static string GetConStr(string name="DB") { return ConfigurationManager.ConnectionStrings[name].ConnectionString; } }

第六步:学习常见错误

  1. 没引用System.Configuration
  2. key名字写错
  3. 配置文件被删除
  4. 格式写错(XML标签不闭合)

三、C#读取Excel文件

一、先搞懂两个知识点(必须懂)

1、Excel文件有两种

  • .xls-->旧版(Excel2003)
  • .xlsx-->旧版(Excel2007+)

2、C#读取Excel调用库

NPOI(免费、无需安装Office、最稳定)

二、学习路线

第一步:新建C#项目(控制台/winform都行)

第二步:安装NPOI(NuGet)

第三步:学会打开Excel文件

1、引入命名空间

using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.IO;

2、打开Excel文件

//文件路径 string path = "First.xlsx"; //加载文件 using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { //创建工作簿 IWorkbook workbook = new XSSFWorkbook(fs); }

第四步:学会读取Sheet

//文件路径 string path = "First.xlsx"; //加载文件 using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { //创建工作簿 IWorkbook workbook = new XSSFWorkbook(fs); //获取工作簿里第一张表 ISheet sheet = workbook.GetSheetAt(0); //打印表名 MessageBox.Show(sheet.SheetName); }

运行效果

第五步:学会读取行、列

//创建工作簿 IWorkbook workbook = new XSSFWorkbook(fs); //获取工作簿里第一张表 ISheet sheet = workbook.GetSheetAt(0); //打印表名 MessageBox.Show(sheet.SheetName); //获取表格中第一行,第一列内容 IRow row = sheet.GetRow(0); ICell cell = row.GetCell(0);

第六步:学会读取单元格内容

//文件路径 string path = "First.xlsx"; //加载文件 using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { //创建工作簿 IWorkbook workbook = new XSSFWorkbook(fs); //获取工作簿里第一张表 ISheet sheet = workbook.GetSheetAt(0); //打印表名 MessageBox.Show(sheet.SheetName); //获取表格中第一行,第一列内容 IRow row = sheet.GetRow(0); ICell cell = row.GetCell(0); string str = cell.ToString(); MessageBox.Show(str); }

第七步:学会循环读取整张表

特别注意:LastRowNum返回的是行总数-1 ,也就是最后一行的索引

LastCellNum返回的是列总数,也就是最后一列索引+1

//循环读取整张表 for (int i = 0; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if(row ==null) continue; ICell cell1 = row.Cells[0]; ICell cell2 = row.Cells[1]; ICell cell3 = row.Cells[2]; ICell cell4 = row.Cells[3]; Console.WriteLine(cell1.ToString()+" "+cell2.ToString()); }

第八步:封装成通用工具类

Excel转换成DataTable后可以绑定到DataGridView显示

public static class ExcelHelper { public static DataTable ExcelToDataTable(string path) { //创建DataTable用于存储Excel数据 DataTable dt = new DataTable(); //加载Excle表格 using (FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fs); //获取表格 ISheet firstSheet = workbook.GetSheetAt(0); //获取表头 IRow HeadRow = firstSheet.GetRow(0); MessageBox.Show("列数:"+ HeadRow.LastCellNum + "行数:"+ firstSheet.LastRowNum); //MessageBox.Show(HeadRow.Cells[0].ToString()); //将表头复制到DataTable中 for (int i = 0; i < HeadRow.LastCellNum; i++) { dt.Columns.Add(HeadRow.Cells[i].ToString()); } //从表头下方的数据开始访问 for (int i = 1; i <= firstSheet.LastRowNum; i++) { IRow row = firstSheet.GetRow(i); DataRow dataRow = dt.NewRow(); dt.Rows.Add(dataRow); if (row == null) continue; for (int j = 0; j < row.LastCellNum; j++) { ICell cell = row.Cells[j]; dataRow[j] = cell.ToString(); } } } return dt; } }

四、C#读取CSV文件

http://www.jsqmd.com/news/532880/

相关文章:

  • Leather Dress Collection 惊艳效果展示:多风格时尚文案与设计描述生成
  • Elden Ring帧率解锁终极指南:突破60帧限制的完整教程
  • CRM系统评测:如何避开功能缺陷,选择全球化支撑能力强的AI平台? - 纷享销客智能型CRM
  • 书匠策AI:问卷设计的“古法匠心”与“智法革新”大碰撞
  • hadoop+spark+hive链家租房租房推荐系统 租房可视化 K-means聚类算法 线性回归预测算法 机器学习
  • 深度剖析5大智能内容解锁策略:Chrome付费墙突破技术全解
  • 【数据结构与算法】第3篇:C语言核心机制回顾(二):动态内存管理与typedef
  • Ubuntu系统上通义千问1.5-1.8B-Chat-GPTQ-Int4的部署教程
  • 嵌入式通信协议设计原则与实现技巧
  • 复杂销售场景破局:面向大中型企业的AI CRM系统实战方案 - 纷享销客智能型CRM
  • 【数据结构与算法】第4篇:算法效率衡量:时间复杂度和空间复杂度
  • 问卷设计“智变”风暴:书匠策AI如何引领科研新风尚?
  • 丹青识画部署案例:海外孔子学院中文教学AI工具箱中的文化理解模块
  • PaddleOCR-VL-WEB保姆级教程:从部署到高性能调优全流程
  • 西安权际海外移民靠谱吗,口碑评价如何值得信任吗 - 工业推荐榜
  • 比迪丽LoRA模型解决403 Forbidden错误:部署与访问权限排查指南
  • Qwen3-VL:30B企业级部署:Clawdbot配置多租户隔离、模型访问权限分级、审计日志留存
  • 如何使用萤石开放平台直播大屏?功能与应用全解析
  • ESP32+MQTT阿里云+手机APP,实现智能家居控制
  • GME-Qwen2-VL-2B-Instruct部署详解:Windows系统本地开发环境配置教程
  • 成都装饰公司优选:别墅装修口碑、质量与适配性最新解析 - 深度智识库
  • 国产开源大模型2026格局:Qwen3.5与DeepSeek V3.2深度解析
  • OpenClaw高阶用法:Qwen3.5-4B-Claude多技能组合调度
  • 2026年西安权际海外移民服务排名,解析权际移民的服务质量保障与特色 - myqiye
  • 11.2版本:使用Flow3D进行高能量密度下选区激光熔化(SLM)数值模拟与计算流体动力学(...
  • 小白也能轻松上手:cv_unet_image-colorization本地AI上色工具快速入门指南
  • 分期乐购物额度回收避坑指南:3 个标准筛掉 99% 的不靠谱渠道 - 团团收购物卡回收
  • 2026年如何选择移民公司,权际移民服务特色与口碑参考 - mypinpai
  • Z-Image-Turbo-rinaiqiao-huiyewunv 前端交互实战:用Vue3构建可视化AI应用界面
  • 3步掌握神经网络可视化:PlotNeuralNet专业绘图实战指南