C#中csv文件與DataTable互相導(dǎo)入處理實(shí)例解析
更新時(shí)間:2014年08月04日 17:36:30 投稿:shichen2014
這篇文章主要介紹了C#中csv文件與DataTable互相導(dǎo)入處理實(shí)例解析,非常實(shí)用的功能,需要的朋友可以參考下
本文介紹了C#中csv文件與DataTable互相導(dǎo)入處理實(shí)例解析,主要功能代碼封裝處理下,相對(duì)比較簡(jiǎn)單。以后項(xiàng)目用到的話可以直接使用。具體方法如下:
1.封裝好的類如下:
using System;
using System.Data;
using System.IO;
using System.Text;
using CSharpUtilHelpV2;
using StringUtilHelp;
namespace DBUtilHelpV2Plus
{
public static class DBToolV2Plus
{
/// <summary>
/// 將DataTable導(dǎo)出到CSV.
/// </summary>
/// <param name="table">DataTable</param>
/// <param name="fullSavePath">保存路徑</param>
/// <param name="tableheader">標(biāo)題信息</param>
/// <param name="columname">列名稱『eg:姓名,年齡』</param>
/// <returns>導(dǎo)出成功true;導(dǎo)出失敗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>
/// 參數(shù)檢查
/// </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("參數(shù)fullSavePath的值{0},不是正確的文件路徑!", fullSavePath));
if (!_fileName.InvalidFileNameChars())
throw new ArgumentException(string.Format("參數(shù)fullSavePath的值{0},包含非法字符!", fullSavePath));
}
/// <summary>
/// 將CSV文件數(shù)據(jù)導(dǎo)入到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.代碼使用測(cè)試如下:
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導(dǎo)出到CSV文件{0}.", testDb.ToCSV(fullSavePath, "姓名,年齡", "人員信息表") == true ? "成功" : "失敗"));
testDb.Rows.Clear();
Console.WriteLine(string.Format("清空數(shù)據(jù),當(dāng)前{0}條數(shù)據(jù).", testDb.Rows.Count));
testDb = testDb.AppendCSVRecord(fullSavePath, 2);
Console.WriteLine(string.Format("CSV文件導(dǎo)入到Datable,導(dǎo)入{0}條數(shù)據(jù).", 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);
}
}
}
}
}
運(yùn)行效果如下圖所示:


相關(guān)文章
DevExpress實(shí)現(xiàn)TreeList向上遞歸獲取符合條件的父節(jié)點(diǎn)
這篇文章主要介紹了DevExpress實(shí)現(xiàn)TreeList向上遞歸獲取符合條件的父節(jié)點(diǎn),需要的朋友可以參考下2014-08-08
C#實(shí)現(xiàn)支付寶沙箱支付的項(xiàng)目實(shí)踐
本文主要介紹了C#實(shí)現(xiàn)支付寶沙箱支付的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C#編程實(shí)現(xiàn)簡(jiǎn)易圖片瀏覽器的方法
這篇文章主要介紹了C#編程實(shí)現(xiàn)簡(jiǎn)易圖片瀏覽器的方法,涉及C#基于WinForm操作圖片實(shí)現(xiàn)預(yù)覽功能的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
淺談C#2.0泛型中的變化:default關(guān)鍵字
下面就詳細(xì)的說明一下。之所以會(huì)用到default關(guān)鍵字,是因?yàn)樾枰诓恢李愋蛥?shù)為值類型還是引用類型的情況下,為對(duì)象實(shí)例賦初值2013-09-09
C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法
這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2015-01-01

