C#簡單的操作csv文件


csv又名逗號文件,可以當作不是表格,而是逗號隔開的文本,簡單的兩個寫入方法:

一:

private string csvFilePath = "D:\\Log\\csv\\";
private string csvTitle =
"SysTime" + "," + "Msg1" + "," + "Msg2" + "," +
"Msg3" + "\r\n";
private void button4_Click(object sender, EventArgs e)
{
string writeData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "," + 1 + "," +2 + "," +3 + "\r\n";

string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".csv";
WriteTxtFile(csvFilePath + fileName, writeData);
}
private bool WriteTxtFile(string cscFile, string msg)
{
if (!File.Exists(cscFile)) NewCsvFile(cscFile); //判斷文件是否存在,不存在則新建,按日期
try
{
using (FileStream fileStream = new FileStream(cscFile, FileMode.Open, FileAccess.Write)) // 寫入文件
{
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.BaseStream.Seek(0, SeekOrigin.End); // 在csv末尾寫入
streamWriter.Write(msg); // 寫入csv文件內容
streamWriter.Flush();
streamWriter.Close();
fileStream.Close();
}
return true;
}
catch { return false; }
}
private void NewCsvFile(string csvFile)
{
string path = csvFile.Substring(0, csvFile.LastIndexOf("\\"));
if (!Directory.Exists(path)) Directory.CreateDirectory(path); //判斷路徑是否存在,不存在則創建
if (!File.Exists(csvFile)) //判斷文件是否存在,不存在則創建
{
using (FileStream fileStream = new FileStream(csvFile, FileMode.Create, FileAccess.Write))
{
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.BaseStream.Seek(0, SeekOrigin.End); // 在csv末尾寫入
streamWriter.Write(csvTitle); // 寫入csv文件表頭
streamWriter.Flush();
streamWriter.Close();
fileStream.Close();
}
}
}

 

二:

StringBuilder csvdata = new StringBuilder();
private void button9_Click(object sender, EventArgs e)
{
string savedatepath = @"D:\Log\csv";
string savedatename = string.Format(@"{0}.csv", DateTime.Now.ToString("yyyyMMdd"));
string savedatefile = string.Format(@"{0}\{1}", savedatepath, savedatename);
if (!File.Exists(savedatefile))
{
csvdata.Append(string.Format("{0},{1},{2}", "Time", "Barde", "Data"));
SaveDataToLocal(savedatepath, savedatename, csvdata.ToString());
csvdata.Clear();
}
csvdata.Append(string.Format("{0},{1},{2}", DateTime.Now.ToString("yyyyMMdd"), "111", "222"));
SaveDataToLocal(savedatepath, savedatename, csvdata.ToString());
csvdata.Clear();
}

private string SaveDataToLocal(string dirpath, string filename, string data) // save data to local path
{
string rtn = "";
string filePath = null;
filePath = string.Format(@"{0}\{1}", dirpath, filename);
try
{
DirectoryInfo dirpathinfo = new DirectoryInfo(dirpath);
if (!dirpathinfo.Exists)
{
dirpathinfo.Create();
}
FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
StreamWriter writer = new StreamWriter(fs, Encoding.ASCII);//這里ASCII碼輸出CSV使用,但txt文件最好用UTF-8,因為漢字不用ASCII碼
writer.WriteLine(data);
writer.Close();
fs.Close();
}
catch (Exception ex)
{
rtn = ex.Message.ToString();
}
return rtn;
}

 

熟練后可以用二元數組或者數據庫寫入,后續npio和調用有時間在更新~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM