国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台州市| 黎川县| 曲麻莱县| 洪雅县| 石泉县| 手机| 中宁县| 垫江县| 昌平区| 白山市| 朝阳市| 苍南县| 伊通| 乌兰浩特市| 龙胜| 天等县| 方正县| 广宗县| 焦作市| 启东市| 油尖旺区| 白玉县| 锡林浩特市| 上蔡县| 香格里拉县| 全州县| 安国市| 行唐县| 滦南县| 安宁市| 浦北县| 修武县| 武平县| 宝应县| 靖远县| 马鞍山市| 东兰县| 阿图什市| 扎赉特旗| 肥城市| 洪泽县|