C#中csv文件与DataTable互相导入处理实例解析
2023-06-13 09:15:40 时间
本文介绍了C#中csv文件与DataTable互相导入处理实例解析,主要功能代码封装处理下,相对比较简单。以后项目用到的话可以直接使用。具体方法如下:
1.封装好的类如下:
usingSystem; usingSystem.Data; usingSystem.IO; usingSystem.Text; usingCSharpUtilHelpV2; usingStringUtilHelp; namespaceDBUtilHelpV2Plus { publicstaticclassDBToolV2Plus { ///<summary> ///将DataTable导出到CSV. ///</summary> ///<paramname="table">DataTable</param> ///<paramname="fullSavePath">保存路径</param> ///<paramname="tableheader">标题信息</param> ///<paramname="columname">列名称『eg:姓名,年龄』</param> ///<returns>导出成功true;导出失败false</returns> publicstaticboolToCSV(thisDataTabletable,stringfullSavePath,stringtableheader,stringcolumname) { ArgumentChecked(table,fullSavePath); //------------------------------------------------------------------------------------ try { string_bufferLine=""; using(StreamWriter_writerObj=newStreamWriter(fullSavePath,false,Encoding.UTF8)) { if(!string.IsNullOrEmpty(tableheader)) _writerObj.WriteLine(tableheader); if(!string.IsNullOrEmpty(columname)) _writerObj.WriteLine(columname); for(inti=0;i<table.Rows.Count;i++) { _bufferLine=""; for(intj=0;j<table.Columns.Count;j++) { if(j>0) _bufferLine+=","; _bufferLine+=table.Rows[i][j].ToString(); } _writerObj.WriteLine(_bufferLine); } returntrue; } } catch(Exception) { returnfalse; } } ///<summary> ///参数检查 ///</summary> ///<paramname="table"></param> ///<paramname="fullSavePath"></param> privatestaticvoidArgumentChecked(DataTabletable,stringfullSavePath) { if(table==null) thrownewArgumentNullException("table"); if(string.IsNullOrEmpty(fullSavePath)) thrownewArgumentNullException("fullSavePath"); string_fileName=CSharpToolV2.GetFileNameOnly(fullSavePath); if(string.IsNullOrEmpty(_fileName)) thrownewArgumentException(string.Format("参数fullSavePath的值{0},不是正确的文件路径!",fullSavePath)); if(!_fileName.InvalidFileNameChars()) thrownewArgumentException(string.Format("参数fullSavePath的值{0},包含非法字符!",fullSavePath)); } ///<summary> ///将CSV文件数据导入到Datable中 ///</summary> ///<paramname="table"></param> ///<paramname="filePath">DataTable</param> ///<paramname="rowIndex">保存路径</param> ///<returns>Datable</returns> publicstaticDataTableAppendCSVRecord(thisDataTabletable,stringfilePath,introwIndex) { ArgumentChecked(table,filePath); if(rowIndex<0) thrownewArgumentException("rowIndex"); using(StreamReaderreader=newStreamReader(filePath,Encoding.UTF8,false)) { inti=0,j=0; reader.Peek(); while(reader.Peek()>0) { j=j+1; string_line=reader.ReadLine(); if(j>=rowIndex+1) { string[]_split=_line.Split(","); DataRow_row=table.NewRow(); for(i=0;i<_split.Length;i++) { _row[i]=_split[i]; } table.Rows.Add(_row); } } returntable; } } } }
2.代码使用测试如下:
usingSystem; usingSystem.Data; usingDBUtilHelpV2; usingDBUtilHelpV2Plus; namespaceDBUtilHelpV2PlusTest { classProgram { staticDataTabletestDb=null; staticstringfullSavePath=string.Format(@"C:\{0}.csv",DateTime.Now.ToString("yyyyMMddHH")); staticvoidMain(string[]args) { try { CreateTestDb(); Console.WriteLine(string.Format("DataTable导出到CSV文件{0}.",testDb.ToCSV(fullSavePath,"姓名,年龄","人员信息表")==true?"成功":"失败")); testDb.Rows.Clear(); Console.WriteLine(string.Format("清空数据,当前{0}条数据.",testDb.Rows.Count)); testDb=testDb.AppendCSVRecord(fullSavePath,2); Console.WriteLine(string.Format("CSV文件导入到Datable,导入{0}条数据.",testDb.Rows.Count)); } catch(Exceptionex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } } staticvoidCreateTestDb() { if(testDb==null) { testDb=DBToolV2.CreateTable("Name,Age|int"); for(inti=1;i<=10;i++) { DataRow_row=testDb.NewRow(); _row["Name"]=string.Format("YanZhiwei_{0}",i); _row["Age"]=i; testDb.Rows.Add(_row); } } } } }
运行效果如下图所示:
相关文章
- asp.net(c#)网页跳转几种方法小结「建议收藏」
- C#多线程编程_wpf和winform的区别
- C#导入导出数据到Excel的通用类代码详解编程语言
- C#数据结构之循环链表的实例代码
- C#动态执行字符串(动态创建代码)的实例代码
- c#文件的复制,移动,创建(实例代码)
- c#启动EXE文件的方法实例
- c#解压文件的实例方法
- C#实现Web文件上传的两种方法实例代码
- C#获取枚举值的简单实例
- C#获取全部目录和文件的简单实例
- c#代码自动修改解决方案下任意文件实例
- c#获取季度时间实例代码(季度的第一天)
- C#导入导出EXCEL文件的代码实例
- c#连接sqlserver数据库、插入数据、从数据库获取时间示例
- c#图像截取实例
- C#数据库操作类AccessHelper实例
- SQLServer中调用C#类中的方法实例(使用.NET程序集)
- C#实现的SN快速输入工具实例
- C#运行CGI程序实例
- 流量统计器如何鉴别C#:WebBrowser中伪造referer
- C#的File类实现文件操作实例详解
- C#序列化与反序列化实例
- C#中私有构造函数的特点和用途实例解析
- C#泛型实例详解
- C#中事件的继承实例分析