首页 > 学院 > 开发设计 > 正文

[C#]csv文件与DataTable互相导入处理

2019-11-14 16:41:51
字体:
来源:转载
供稿:网友

封装处理下,以后项目用到可以直接使用,比较简单。

1.首先看封装好的类

using System;using System.Data;using System.IO;using System.Text;using CSharpUtilHelpV2;using StringUtilHelp;namespace DBUtilHelpV2Plus{    public static class DBToolV2Plus    {        /// <summary>        /// 将DataTable导出到CSV.        /// </summary>        /// <param name="table">DataTable</param>        /// <param name="fullSavePath">保存路径</param>        /// <param name="tableheader">标题信息</param>        /// <param name="columname">列名称『eg:姓名,年龄』</param>        /// <returns>导出成功true;导出失败false</returns>        public static bool ToCSV(this DataTable table, string fullSavePath, string tableheader, string columname)        {            ArgumentChecked(table, fullSavePath);            //------------------------------------------------------------------------------------            try            {                string _bufferLine = "";                using (StreamWriter _writerObj = new StreamWriter(fullSavePath, false, Encoding.UTF8))                {                    if (!string.IsNullOrEmpty(tableheader))                        _writerObj.WriteLine(tableheader);                    if (!string.IsNullOrEmpty(columname))                        _writerObj.WriteLine(columname);                    for (int i = 0; i < table.Rows.Count; i++)                    {                        _bufferLine = "";                        for (int j = 0; j < table.Columns.Count; j++)                        {                            if (j > 0)                                _bufferLine += ",";                            _bufferLine += table.Rows[i][j].ToString();                        }                        _writerObj.WriteLine(_bufferLine);                    }                    return true;                }            }            catch (Exception)            {                return false;            }        }        /// <summary>        /// 参数检查        /// </summary>        /// <param name="table"></param>        /// <param name="fullSavePath"></param>        PRivate static void ArgumentChecked(DataTable table, string fullSavePath)        {            if (table == null)                throw new ArgumentNullException("table");            if (string.IsNullOrEmpty(fullSavePath))                throw new ArgumentNullException("fullSavePath");            string _fileName = CSharpToolV2.GetFileNameOnly(fullSavePath);            if (string.IsNullOrEmpty(_fileName))                throw new ArgumentException(string.Format("参数fullSavePath的值{0},不是正确的文件路径!", fullSavePath));            if (!_fileName.InvalidFileNameChars())                throw new ArgumentException(string.Format("参数fullSavePath的值{0},包含非法字符!", fullSavePath));        }        /// <summary>        /// 将CSV文件数据导入到Datable中        /// </summary>        /// <param name="table"></param>        /// <param name="filePath">DataTable</param>        /// <param name="rowIndex">保存路径</param>        /// <returns>Datable</returns>        public static DataTable AppendCSVRecord(this DataTable table, string filePath, int rowIndex)        {            ArgumentChecked(table, filePath);            if (rowIndex < 0)                throw new ArgumentException("rowIndex");            using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8, false))            {                int i = 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);                    }                }                return table;            }        }    }}

2.代码使用测试

using System;using System.Data;using DBUtilHelpV2;using DBUtilHelpV2Plus;namespace DBUtilHelpV2PlusTest{    class Program    {        static DataTable testDb = null;        static string fullSavePath = string.Format(@"C:/{0}.csv", DateTime.Now.ToString("yyyyMMddHH"));        static void Main(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 (Exception ex)            {                Console.WriteLine(ex.Message);            }            finally            {                Console.ReadLine();            }        }        static void CreateTestDb()        {            if (testDb == null)            {                testDb = DBToolV2.CreateTable("Name,Age|int");                for (int i = 1; i <= 10; i++)                {                    DataRow _row = testDb.NewRow();                    _row["Name"] = string.Format("YanZhiwei_{0}", i);                    _row["Age"] = i;                    testDb.Rows.Add(_row);                }            }        }    }}

image

image


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表