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\nDateTime.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准备知识必须懂Config 配置文件 后缀 .config作用存固定参数IP、数据库、账号、路径C#项目默认配置文件桌面/服务项目 --- App.config网站项目 ---Web.config阶段一正式学习路线第一步创建配置文件右键项目-添加-新建项选择应用程序配置文件(App.config)确定-自动生成App.config第二步学习配置文件结构?xml version1.0 encodingutf-8 ? configuration !-- 存放普通配置IP、间隔、参数 -- appSettings add keyPLC_IP value192.168.0.1/ add keyInterval value500/ /appSettings !-- 专门存放数据库连接 -- connectionStrings add nameDB valueServer.;DatabaseTestDB;Uidsa;Pwd123456;/ /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\nConStr);运行效果第五步学习封装工具类通用public static class ConfigHelper { /// summary /// 根据键获取字符串 /// /summary /// param namekey/param /// returns/returns public static string GetStr(string key) { return ConfigurationManager.AppSettings[key]; } /// summary /// 根据键获取整型数据 /// /summary /// param namekey/param /// returns/returns public static int GetInt(string key) { return int.Parse(ConfigurationManager.AppSettings[key]); } /// summary /// 获取数据库连接字符串 /// /summary /// param namename/param /// returns/returns public static string GetConStr(string nameDB) { return ConfigurationManager.ConnectionStrings[name].ConnectionString; } }第六步学习常见错误没引用System.Configurationkey名字写错配置文件被删除格式写错(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文件