中文字幕无码a片久久,亚洲日韩在线观看浪潮,人人超人人超碰超国产二区,国产人妻久久一区二区,国产人妻久久一区二区

福感科技有限公司 歡迎您!
聯(lián)系方式

    地址:北京市平谷區(qū)馬坊鎮(zhèn)金河北街17號院3號樓7層712

    電話:010-89968230

    網(wǎng)站:http://0743119.com

Csv文件操作(創(chuàng)建、讀取、寫入、修改)

2024-12-5 20:19:41??????點擊:

Csv文件,又稱逗號分隔值文件,文件以純文本的形式存儲表格數(shù)據(jù),所以csv也是一種特殊的表格。

純文本就意味著該文件必須像二進(jìn)制文件那樣解析,使用記事本打開,可以看到數(shù)據(jù)都是以逗號分隔。

csv文件由任意條數(shù)據(jù)組成,記錄間以換行符分隔,每條數(shù)據(jù)字段間以逗號分隔。

csv文件跟Excel文件雖然都是表格文件,但是格式還有有很大不同的,Excel文件用文本編輯器打開是一堆亂碼,csv文件用文本編輯器打開就是以逗號分隔的數(shù)據(jù)。

csv文件的出現(xiàn)就是為了實現(xiàn)簡單的數(shù)據(jù)存儲,是一種純文本的文件,*廣泛的應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù),能夠兼容各種程序,那么面對這樣的文件類型該如何創(chuàng)建、讀取、寫入、修改呢。


創(chuàng)建csv文件

Csv文件是純文本文檔,只需要按照特定的格式保存文檔,然后添加后綴.csv即可。

特定的格式:以換行分隔符分割每一行,以逗號分割每一列。

構(gòu)建DataTable數(shù)據(jù),創(chuàng)建csv文檔(第一種寫法)

using Excel;
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class Demo5 : MonoBehaviour
{
    void Start()
    {
    }

    // 將DataTable中數(shù)據(jù)寫入到CSV文件中
    public static void SaveCSV(string filePath,DataTable dt)
    {
        FileInfo fi = new FileInfo(filePath);
        if (!fi.Directory.Exists)
        {
            fi.Directory.Create();
        }
        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
        {
            using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
            {
                string data = "";
                //寫入表頭
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    data += dt.Columns[i].ColumnName.ToString();
                    if (i < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
                //寫入每一行每一列的數(shù)據(jù)
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    data = "";
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        string str = dt.Rows[i][j].ToString();
                        data += str;
                        if (j < dt.Columns.Count - 1)
                        {
                            data += ",";
                        }
                    }
                    sw.WriteLine(data);
                }
                sw.Close();
                fs.Close();
            }
        }
    }
}
因為這個函數(shù)需要傳遞進(jìn)去一個數(shù)據(jù)表DataTable數(shù)據(jù),所以,我們要先構(gòu)建一個DataTable數(shù)據(jù),在這里就演示一下如何創(chuàng)建DataTable數(shù)據(jù):


構(gòu)建DataTable


using Excel;
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class Demo5 : MonoBehaviour
{
    void Start()
    {
        //創(chuàng)建表 設(shè)置表名
        DataTable dt = new DataTable("Sheet1");
        //創(chuàng)建列 有三列
        dt.Columns.Add("名字");
        dt.Columns.Add("年齡");
        dt.Columns.Add("性別");
        //創(chuàng)建行 每一行有三列數(shù)據(jù)
        DataRow dr = dt.NewRow();
        dr["column0"] = "張三";
        dr["column1"] = "18";
        dr["column2"] = "男";
        dt.Rows.Add(dr);
        //取值 第一行的123列的數(shù)據(jù)
        Debug.Log(dt.Rows[0][0].ToString());
        Debug.Log(dt.Rows[0][1].ToString());
        Debug.Log(dt.Rows[0][2].ToString());
    }
}
有了數(shù)據(jù)表數(shù)據(jù),就可以去創(chuàng)建csv文件了



using Excel;
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class Demo5 : MonoBehaviour
{
    void Start()
    {
        //創(chuàng)建表 設(shè)置表名
        DataTable dt = new DataTable("Sheet1");
        //創(chuàng)建列 有三列
        dt.Columns.Add("名字");
        dt.Columns.Add("年齡");
        dt.Columns.Add("性別");
        //創(chuàng)建行 每一行有三列數(shù)據(jù)
        DataRow dr = dt.NewRow();
        dr["名字"] = "張三";
        dr["年齡"] = "18";
        dr["性別"] = "男";
        dt.Rows.Add(dr);
        string filePath = Application.streamingAssetsPath + "\\data.csv";
        SaveCSV(filePath, dt);
    }

    // 將DataTable中數(shù)據(jù)寫入到CSV文件中
    public static void SaveCSV(string filePath,DataTable dt)
    {
        FileInfo fi = new FileInfo(filePath);
        if (!fi.Directory.Exists)
        {
            fi.Directory.Create();
        }
        using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
        {
            using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
            {
                string data = "";
                //寫入表頭
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    data += dt.Columns[i].ColumnName.ToString();
                    if (i < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
                //寫入每一行每一列的數(shù)據(jù)
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    data = "";
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        string str = dt.Rows[i][j].ToString();
                        data += str;
                        if (j < dt.Columns.Count - 1)
                        {
                            data += ",";
                        }
                    }
                    sw.WriteLine(data);
                }
                sw.Close();
                fs.Close();
            }
        }
    }
}

構(gòu)建DataTable數(shù)據(jù),創(chuàng)建csv文檔(第二種寫法)

using Excel;
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class Demo5 : MonoBehaviour
{
    void Start()
    {
        //創(chuàng)建表 設(shè)置表名
        DataTable dt = new DataTable("Sheet1");
        //創(chuàng)建列 有三列
        dt.Columns.Add("名字");
        dt.Columns.Add("年齡");
        dt.Columns.Add("性別");
        //創(chuàng)建行 每一行有三列數(shù)據(jù)
        DataRow dr = dt.NewRow();
        dr["名字"] = "張三";
        dr["年齡"] = "18";
        dr["性別"] = "男";
        dt.Rows.Add(dr);
        string filePath = Application.streamingAssetsPath + "\\data.csv";
        SaveCSV(filePath, dt);
    }

    public void SaveCSV(string CSVPath, DataTable mSheet)
    {
        //判斷數(shù)據(jù)表內(nèi)是否存在數(shù)據(jù)
        if (mSheet.Rows.Count < 1)
            return;

        //讀取數(shù)據(jù)表行數(shù)和列數(shù)
        int rowCount = mSheet.Rows.Count;
        int colCount = mSheet.Columns.Count;

        //創(chuàng)建一個StringBuilder存儲數(shù)據(jù)
        StringBuilder stringBuilder = new StringBuilder();

        //讀取數(shù)據(jù)
        for (int i = 0; i < mSheet.Columns.Count; i++)
        {
            stringBuilder.Append(mSheet.Columns[i].ColumnName + ",");
        }
        stringBuilder.Append("\r\n");
        for (int i = 0; i < rowCount; i++)
        {
            for (int j = 0; j < colCount; j++)
            {
                //使用","分割每一個數(shù)值
                stringBuilder.Append(mSheet.Rows[i][j] + ",");
            }
            //使用換行符分割每一行
            stringBuilder.Append("\r\n");
        }

        //寫入文件
        using (FileStream fileStream = new FileStream(CSVPath, FileMode.Create, FileAccess.Write))
        {
            using (TextWriter textWriter = new StreamWriter(fileStream,Encoding.UTF8))
            {
                textWriter.Write(stringBuilder.ToString());
            }
        }
    }
}

讀取csv文件

讀取csv文件就沒啥好說的,就是將讀取的數(shù)據(jù)保存到DataTable數(shù)據(jù)表中,然后讀取數(shù)據(jù)表里面的數(shù)據(jù)即可:



using Excel;
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
using System.Text;
using UnityEngine;

public class Demo5 : MonoBehaviour
{
    void Start()
    {
        string filePath = Application.streamingAssetsPath + "\\data.csv";
        DataTable dt = OpenCSV(filePath);
        Debug.Log(dt.Rows[0][0]);
        Debug.Log(dt.Rows[0][1]);
        Debug.Log(dt.Rows[0][2]);
    }

    public static DataTable OpenCSV(string filePath)//從csv讀取數(shù)據(jù)返回table
    {
        DataTable dt = new DataTable();
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
            {
                //記錄每次讀取的一行記錄
                string strLine = "";
                //記錄每行記錄中的各字段內(nèi)容
                string[] aryLine = null;
                string[] tableHead = null;
                //標(biāo)示列數(shù)
                int columnCount = 0;
                //標(biāo)示是否是讀取的第一行
                bool IsFirst = true;
                //逐行讀取CSV中的數(shù)據(jù)
                while ((strLine = sr.ReadLine()) != null)
                {
                    if (IsFirst == true)
                    {
                        tableHead = strLine.Split(',');
                        IsFirst = false;
                        columnCount = tableHead.Length;
                        //創(chuàng)建列
                        for (int i = 0; i < columnCount; i++)
                        {
                            DataColumn dc = new DataColumn(tableHead[i]);
                            dt.Columns.Add(dc);
                        }
                    }
                    else
                    {
                        aryLine = strLine.Split(',');
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < columnCount; j++)
                        {
                            dr[j] = aryLine[j];
                        }
                        dt.Rows.Add(dr);
                    }
                }
                if (aryLine != null && aryLine.Length > 0)
                {
                    dt.DefaultView.Sort = tableHead[0] + " " + "asc";
                }
                sr.Close();
                fs.Close();
                return dt;
            }
        }
    }
}

csv文件就是一個純文本的文件,所以可以使用純文本的形式去讀取文件,保存文件。之所以用DataTable數(shù)據(jù)表,就是因為這個數(shù)據(jù)結(jié)構(gòu)讀取、保存、使用數(shù)據(jù)都比較的方便。

文章內(nèi)容整理來自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有問題,請聯(lián)系我們!

Copyright 2019 0743119.com

福感科技有限公司 版權(quán)所有 All Rights Reserved

京ICP備20002031號

010-89968230