Maison > développement back-end > Tutoriel C#.Net > Auto-apprentissage C#03 à partir de 0 - Le flux de fichiers enregistre les données au format txt/excel

Auto-apprentissage C#03 à partir de 0 - Le flux de fichiers enregistre les données au format txt/excel

黄舟
Libérer: 2017-02-04 10:35:57
original
1714 Les gens l'ont consulté

Présente principalement les classes DataTable, Log, FileStream et StreamWriter pour enregistrer les données aux formats txt et Excel.

1. Créez la classe TestDataTable

La méthode CreateTable() crée une table de données, la méthode SaveTableToExcel(string fileName) enregistre la table de données sous un fichier au format Excel nommé fileName, CreateDirectory(string fileName) ) pour vérifier si le fichier existe. S'il n'existe pas, il en créera automatiquement un.

class TestDataTable: DataTable
    {        public void CreateTable()
        {            this.Columns.Add("Time(s)", System.Type.GetType("System.String"));            this.Columns.Add("Ch", System.Type.GetType("System.String"));
            this.Columns.Add("BER", System.Type.GetType("System.String"));            
            const int length1 = 4;            
            const int length2 = 10;            int[][] data = new int[length1][];            //第一条数据
            data[0] = new int[length2] { 13, 25, 21, 33, 28, 39, 43, 36, 42, 36 };            //第二条数据
            data[1] = new int[length2] { 20, 13, 10, 5, 15, 7, 10, 14, 19, 20 };            //第三条数据
            data[2] = new int[length2] { 78, 92, 65, 83, 90, 59, 63, 72, 88, 98 };            //第四条数据
            data[3] = new int[length2] { 45, 49, 39, 47, 52, 76, 67, 51, 57, 67 };            for (int i = 0; i < length2; i++)
            {                for (int j = 0; j < length1; j++)
                {
                    DataRow dr = this.NewRow();
                    dr[0] = i + 1;
                    dr[1] = j;
                    dr[2] = data[j][i];                    this.Rows.Add(dr);
                }
            }
        }        public void SaveTableToExcel(string fileName)
        {
            CreateDirectory(fileName);
            StringBuilder title = new StringBuilder();
            FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate);
            StreamWriter writer = new StreamWriter(new BufferedStream(fileStream), System.Text.Encoding.Default);            
for (int i = 0; i < this.Columns.Count; i++)
            {
                title.Append(this.Columns[i].ColumnName + "\t"); //栏位:自动跳到下一单元格
            }

            title.Append("\n");
            writer.Write(title);            foreach (DataRow row in this.Rows)
            {
                StringBuilder content = new StringBuilder();                for (int i = 0; i < this.Columns.Count; i++)
                {
                    content.Append(row[i] + "\t");//内容:自动跳到下一单元格
                }
                content.Append("\n");
                writer.Write(content);
            }
            writer.Close();
            fileStream.Close();
        }        public void CreateDirectory(string fileName)
        {
            DirectoryInfo directoryInfo = Directory.GetParent(fileName);            
if (!directoryInfo.Exists)
            {
                directoryInfo.Create();
            }
        }  
    }
Copier après la connexion

2. Créez une classe Log Log

Définissez le nom de fichier FileName comme attribut de la classe et attribuez-le dans le constructeur. La méthode SaveLogToTxt(string info) enregistre les informations sur les données dans un fichier txt nommé fileName. De même, la méthode CreateDirectory() vérifie si le fichier existe

class Log
    {        private string fileName; 

        public string FileName
        {            set
            {                this.fileName = value;
            }            get
            {                return this.fileName;
            }
        }        public Log(string fileName)
        {            this.fileName = fileName;
            CreateDirectory();
        }  

        public void SaveLogToTxt(string info)  
        {    
            StreamWriter writer = null;  
            FileStream fileStream = null;            try  
            {
                System.IO.FileInfo fileInfo = new System.IO.FileInfo(this.fileName);  
                if (!fileInfo.Exists)  
                {  
                    fileStream = fileInfo.Create();  
                    writer = new StreamWriter(fileStream);  
                }  
                else  
                {  
                    fileStream = fileInfo.Open(FileMode.Append, FileAccess.Write);  
                    writer = new StreamWriter(fileStream);  
                }  
                writer.WriteLine(info);
            }  
            finally  
            {  
                if (writer != null)  
                {  
                    writer.Close();  
                    writer.Dispose();  
                    fileStream.Close();  
                    fileStream.Dispose();  
                }  
            }  
        }  

        public void CreateDirectory()  
        {  
            DirectoryInfo directoryInfo = Directory.GetParent(this.fileName);  
            if (!directoryInfo.Exists)  
            {  
                directoryInfo.Create();  
            }  
        }  
    }
Copier après la connexion

3. Appelez la méthode de classe pour enregistrer les données

Instanciez la classe, créez une table de données et enregistrez la table au format txt. format et format Excel Nommé d'après le temps.

TestDataTable dt = new TestDataTable();
dt.CreateTable();
dt.Rows.Clear(); //清除数据table里所有行DateTime startTime = DateTime.Now;
Log log = new Log(@"Log\" + startTime.ToString("yyyyMMddHHmmss") + ".txt");//以时间为文件命名,存在exe所在文件夹下的Log文件夹里for (int i = 0; i < 4; i++)
{
    DataRow dr = dt.NewRow();
    dr[0] = (int)second;
    dr[1] = i;
    dr[2] = BERByChannel[i].ToString("E2");
    dt.Rows.Add(dr);//添加新行到数据table

    string info = string.Format("{0}: Time(s): {1}, Ch: {2}, BER: {3}", DateTime.Now, dr[0], dr[1], dr[2]);
    log.SaveLogToTxt(info);//存为txt格式                    }//存为excel格式string fileName = @"TestRecord\" + startTime.ToString("yyyyMMddHHmmss") + ".xls";
dt.SaveTableToExcel(fileName);//以时间为文件命名,存在exe所在文件夹下的TestRecord文件夹里
Copier après la connexion

Ce qui précède est le contenu de l'auto-apprentissage C#03 à partir de 0 - flux de fichiers enregistrant les données au format txt/excel. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. .php.cn) !


source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal