C#操作CSV文件類實(shí)例
本文實(shí)例講述了C#操作CSV文件類。分享給大家供大家參考。具體分析如下:
這個(gè)C#類用于轉(zhuǎn)換DataTable為CSV文件、CSV文件轉(zhuǎn)換成DataTable,如果需要進(jìn)行CSV和DataTable之間進(jìn)行轉(zhuǎn)換,使用這個(gè)類非常合適。
using System.Data;
using System.IO;
namespace DotNet.Utilities
{
/// <summary>
/// CSV文件轉(zhuǎn)換類
/// </summary>
public static class CsvHelper
{
/// <summary>
/// 導(dǎo)出報(bào)表為Csv
/// </summary>
/// <param name="dt">DataTable</param>
/// <param name="strFilePath">物理路徑</param>
/// <param name="tableheader">表頭</param>
/// <param name="columname">字段標(biāo)題,逗號(hào)分隔</param>
public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname)
{
try
{
string strBufferLine = "";
StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8);
strmWriterObj.WriteLine(tableheader);
strmWriterObj.WriteLine(columname);
for (int i = 0; i < dt.Rows.Count; i++)
{
strBufferLine = "";
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j > 0)
strBufferLine += ",";
strBufferLine += dt.Rows[i][j].ToString();
}
strmWriterObj.WriteLine(strBufferLine);
}
strmWriterObj.Close();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 將Csv讀入DataTable
/// </summary>
/// <param name="filePath">csv文件路徑</param>
/// <param name="n">表示第n行是字段title,第n+1行是記錄開(kāi)始</param>
public static DataTable csv2dt(string filePath, int n, DataTable dt)
{
StreamReader reader = new StreamReader(filePath, System.Text.Encoding.UTF8, false);
int i = 0, m = 0;
reader.Peek();
while (reader.Peek() > 0)
{
m = m + 1;
string str = reader.ReadLine();
if (m >= n + 1)
{
string[] split = str.Split(',');
System.Data.DataRow dr = dt.NewRow();
for (i = 0; i < split.Length; i++)
{
dr[i] = split[i];
}
dt.Rows.Add(dr);
}
}
return dt;
}
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
c# 動(dòng)態(tài)構(gòu)建LINQ查詢表達(dá)式
這篇文章主要介紹了c# 如何動(dòng)態(tài)構(gòu)建LINQ查詢表達(dá)式,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下2020-11-11
使用C#獲取遠(yuǎn)程圖片 Form用戶名與密碼Authorization認(rèn)證的實(shí)現(xiàn)
本篇文章介紹了,使用C#獲取遠(yuǎn)程圖片 Form用戶名與密碼Authorization認(rèn)證的實(shí)現(xiàn)。需要的朋友參考下2013-04-04
C# 使用CancellationTokenSource取消多線程
有時(shí)間我們?cè)谑褂枚嗑€程的時(shí)候,需要取消線程的執(zhí)行,可以使用CancellationTokenSource來(lái)取消對(duì)Task開(kāi)辟多線程的取消,感興趣的可以了解一下2021-08-08
如何在C# 中查找或結(jié)束程序域中的主、子進(jìn)程
這篇文章主要介紹了如何在C# 中查找或結(jié)束程序域中的主、子進(jìn)程,幫助大家更好的理解和使用c#編程語(yǔ)言,感興趣的朋友可以了解下2020-11-11
C#?winform?窗體控件跨線程訪問(wèn)的實(shí)現(xiàn)
在做winform開(kāi)發(fā)時(shí),如果在子線程中去設(shè)置主線程中UI控件的屬性,會(huì)出現(xiàn)“跨線程調(diào)用異常”,本文就來(lái)介紹一下C#?winform?窗體控件跨線程訪問(wèn)的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12
C#根據(jù)前臺(tái)傳入實(shí)體名稱實(shí)現(xiàn)動(dòng)態(tài)查詢數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了C#如何根據(jù)前臺(tái)傳入實(shí)體名稱實(shí)現(xiàn)動(dòng)態(tài)查詢數(shù)據(jù)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
C#用RabbitMQ實(shí)現(xiàn)消息訂閱與發(fā)布
在消息隊(duì)列模型中,如何將消息廣播到所有的消費(fèi)者,這種模式成為“發(fā)布/訂閱”。本文主要以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述通過(guò)fanout交換機(jī),實(shí)現(xiàn)消息的發(fā)布與訂閱,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正。2021-05-05

