国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[C#]CSVHelper

2019-11-14 16:22:17
字體:
來源:轉載
供稿:網友

關鍵代碼:

using System.Data;using System.IO;using System.Text;namespace YanZhiwei.DotNet2.Utilities.Common{    /// <summary>    /// CSV文件轉換類    /// </summary>    public static class CSVHelper    {        #region 導出到csv文件        /// <summary>        /// 導出到csv文件        /// eg:        /// CSVHelper.ToCSV(_personInfoView, @"C:/Users/YanZh_000/Downloads/person.csv", "用戶信息表", "名稱,年齡");        /// </summary>        /// <param name="table">DataTable</param>        /// <param name="filePath">導出路徑</param>        /// <param name="tableheader">標題</param>        /// <param name="columname">列名稱,以','英文逗號分隔</param>        /// <returns>是否導出成功</returns>        public static bool ToCSV(this DataTable table, string filePath, string tableheader, string columname)        {            try            {                if (File.Exists(filePath))                    File.Delete(filePath);                using (FileStream _stream = new FileStream(filePath, FileMode.Create, Fileaccess.ReadWrite))                {                    StreamWriter _writer = new StreamWriter(_stream, Encoding.UTF8);                    _writer.WriteLine(tableheader);                    _writer.WriteLine(columname);                    for (int i = 0; i < table.Rows.Count; i++)                    {                        for (int j = 0; j < table.Columns.Count; j++)                        {                            _writer.Write(table.Rows[i][j].ToString());                            _writer.Write(",");                        }                        _writer.WriteLine();                    }                    _writer.Close();                    return true;                }            }            catch            {                return false;            }        }        #endregion        #region  將CSV文件導入到DataTable        /// <summary>        /// 將CSV文件導入到DataTable        /// </summary>        /// <param name="table">DataTable</param>        /// <param name="filePath">csv文件物理路徑</param>        /// <param name="startRowIndex">數據導入起始行號</param>        /// <returns>DataTable</returns>        public static DataTable ImportToTable(this DataTable table, string filePath, int startRowIndex)        {            using (StreamReader reader = new StreamReader(filePath, Encoding.UTF8, false))            {                int j = 0;                while (reader.Peek() > -1)                {                    j = j + 1;                    string _line = reader.ReadLine();                    if (j >= startRowIndex + 1)                    {                        string[] _dataArray = _line.Split(',');                        DataRow _dataRow = table.NewRow();                        for (int k = 0; k < table.Columns.Count; k++)                        {                            _dataRow[k] = _dataArray[k];                        }                        table.Rows.Add(_dataRow);                    }                }                return table;            }        }        #endregion    }}

測試代碼:

using Microsoft.VisualStudio.TestTools.UnitTesting;using System;using System.Data;using YanZhiwei.DotNet2.UtilitiesTests;namespace YanZhiwei.DotNet2.Utilities.Common.Tests{    [TestClass()]    public class CSVHelperTests    {        private DataTable TestTable;        [TestMethod()]        public void ToCSVTest()        {            for (Int16 i = 18; i < 28; i++)            {                DataRow _person = TestTable.NewRow();                _person["Name"] = "YanZhiwei" + i;                _person["Age"] = i;                TestTable.Rows.Add(_person);            }            bool _expected = true;            bool _actual = CSVHelper.ToCSV(TestTable, @"C:/Users/YanZh_000/Downloads/person.csv", "用戶信息表", "名稱,年齡");            Assert.AreEqual(_expected, _actual);        }        [TestInitialize]        public void InitTestTable()        {            TestTable = new DataTable();            TestTable.Columns.Add(new DataColumn("Name", typeof(string)));            TestTable.Columns.Add(new DataColumn("Age", typeof(int)));        }        [TestMethod()]        public void ImportToTableTest()        {            DataTable _personInfoView = TestTable.Clone();            DataTable _expected = TestTable.Clone();            for (Int16 i = 18; i < 28; i++)            {                DataRow _person = _expected.NewRow();                _person["Name"] = "YanZhiwei" + i;                _person["Age"] = i;                _expected.Rows.Add(_person);            }            DataTable _actual = CSVHelper.ImportToTable(_personInfoView, @"C:/Users/YanZh_000/Downloads/person.csv", 2);            Assert.IsTrue(ResultSetComparer.AreIdenticalResultSets(_expected, _actual));        }        [TestCleanup]        public void ResetTable()        {            TestTable = null;        }    }}

測試結果:

image


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦旗| 疏附县| 丘北县| 南乐县| 石屏县| 大丰市| 富平县| 洛阳市| 班玛县| 江西省| 麻栗坡县| 徐闻县| 宣威市| 富顺县| 巨鹿县| 巩留县| 大同市| 黄浦区| 温宿县| 弋阳县| 顺昌县| 吉水县| 巫溪县| 遂平县| 文安县| 红原县| 景谷| 贺兰县| 长垣县| 内黄县| 舒兰市| 金坛市| 霞浦县| 泽州县| 承德市| 府谷县| 临江市| 襄樊市| 黔西| 正镶白旗| 乌什县|