c#保存数据到Excel表-简单方式

c#保存数据到Excel表-简单方式

using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ODSensor
{
    public class SaveData
    {
        FileStream outFileStream = null;
        StreamWriter saveWriter = null;

        int MAX_FILE_LENGTH = 1000000;
        int COUNTER_FILE_LENGTH = 0;
        String saveFileName = "\\测量记录";
        String fileName;
        String currentDIR = "";
        String speFileName;
        char temp = '	';
        private float interTime = 1;
        int dirNum = 0;
        private bool isOpenFile = false;
        private bool change_dir = true;
        public SaveData()
        {

        }
        /// 
        /// 设置intertime的值
        /// 
        public void setinterTime(float inter)
        {
            interTime = inter;
        }
        public void initSaveFile(String dir, String extDir, String extDir2, String tmpFileName, bool isLimit)
        {
            change_dir = isLimit;
            speFileName = tmpFileName;
            COUNTER_FILE_LENGTH = 0;
            if (dir != "")
            {
                if (extDir.Equals(""))
                {
                    currentDIR = dir;
                }
                else if (extDir2.Equals(""))
                {
                    currentDIR = dir + "\\" + extDir + "\\";
                }
                else
                {
                    currentDIR = dir +  "\\" + extDir + "\\" + extDir2 + "\\";
                }
                //currentDIR = dir + "\\" + extDir;
            }
            else
            {
                //currentDIR = Directory.GetCurrentDirectory()+saveFileName;
                if (extDir.Equals(""))
                {
                    currentDIR = AppDomain.CurrentDomain.BaseDirectory;
                }
                else if (extDir2.Equals(""))
                {
                    currentDIR = AppDomain.CurrentDomain.BaseDirectory + extDir + "\\";
                }
                else
                {
                    currentDIR = AppDomain.CurrentDomain.BaseDirectory + extDir + "\\" + extDir2 + "\\";
                }
                //currentDIR = AppDomain.CurrentDomain.BaseDirectory + extDir + "\\" + extDir2 + "\\";
            }

            if (!Directory.Exists(currentDIR))
            {
                Directory.CreateDirectory(currentDIR);
            }

            createNewFileName();
            //saveWriter = new StreamWriter(outFileStream);
        }

        /// 
        /// 写数据
        /// 
        public void writeData(float result)
        {
            DateTime resultDate = DateTime.Now;
            String timeOfDay = resultDate.ToLongTimeString();
            if (COUNTER_FILE_LENGTH++ < MAX_FILE_LENGTH)
            {
                saveWriter.Write(timeOfDay + "\t" + result.ToString() + "\r\n");
            }
            else
            {
                COUNTER_FILE_LENGTH = 0;
                openNewFile();
                saveWriter.Write(timeOfDay + result.ToString() + "\r\n");
            }
        }

        public void writeTimeData(Double xresult, float yresult)
        {
            if (COUNTER_FILE_LENGTH++ < MAX_FILE_LENGTH)
            {
                xresult = (float)(xresult * interTime);
                saveWriter.Write(xresult.ToString() + temp + yresult.ToString() + "\r\n");
            }
            else
            {
                COUNTER_FILE_LENGTH = 0;
                xresult = (float)(xresult * interTime);
                openNewFile();
                saveWriter.Write(xresult.ToString() + temp + yresult.ToString() + "\r\n");
            }
        }

        public void writeData(float result1, float result2)
        {
            DateTime resultDate = DateTime.Now;
            String timeOfDay = resultDate.ToLongTimeString(); 
            if (COUNTER_FILE_LENGTH++ < MAX_FILE_LENGTH)
            {
                saveWriter.Write(timeOfDay + "\t" + result1.ToString() + "\t" + result2.ToString() + "\r\n");                
            }
            else
            {
                COUNTER_FILE_LENGTH = 0;
                openNewFile();
                saveWriter.Write(timeOfDay + "\t" + result1.ToString() + "\t" + result2.ToString() + "\r\n");   
            }
        }

        public void writeString(string str)
        {
            saveWriter.Write(str + "\r\n"); //换行
        }

        public void writedata(float result)
        {
            saveWriter.Write(result.ToString() + "\r\n");
        }

        public void writeStr(string t_str)
        {
            saveWriter.Write(t_str + "\t"); 
        }

        public void writeFlush()
        {
            saveWriter.Flush();
        }
        /// 
        /// 关闭流文件
        /// 
        public void closeFile()
        {
            if (isOpenFile)
            {
                saveWriter.Flush();
                Thread.Sleep(10);
                saveWriter.Close();
                isOpenFile = false;
            }
        }

        /// 
        /// 打开新文件
        /// 
        public void openNewFile()
        {
            saveWriter.Flush();
            Thread.Sleep(10);
            saveWriter.Close();
            createNewFileName();
        }

        /// 
        /// 创建新的文件名称
        /// 
        protected void createNewFileName()
        {
            //int fileTypeNum = 0;
            String save_dir = null;
            bool mark = false;

            if (change_dir)
            {
                save_dir = createNewDirectory(currentDIR);//当需要用100个文件换文件夹时,调用这一个
            }
            else
            {
                save_dir = currentDIR + DateTime.Now.ToString("yyyyMMdd");//当不用100个文件换文件夹时,调用这一个
                if (!Directory.Exists(save_dir))
                {
                    Directory.CreateDirectory(save_dir);
                }
            }

            DirectoryInfo dir = new DirectoryInfo(save_dir);

            do                            //在所得到的文件夹信息中循环查找是否有同名的文件            
            {
                //if (DateTime.Now.Hour >= 10)
                //{
                //    hour = DateTime.Now.Hour.ToString();
                //}
                //else
                //{
                //    hour = "0" + DateTime.Now.Hour.ToString();
                //}
                //if (DateTime.Now.Minute >= 10)
                //{
                //    minute = DateTime.Now.Minute.ToString();
                //}
                //else
                //{
                //    minute = "0" + DateTime.Now.Minute.ToString();
                //}
                //if (DateTime.Now.Second >= 10)
                //{
                //    second = DateTime.Now.Second.ToString();
                //}
                //else
                //{
                //    second = "0" + DateTime.Now.Second.ToString();
                //}
                mark = false;
                fileName = speFileName + DateTime.Now.ToString("yyyyMMddHHmmss")+".xls";
                FileInfo[] allFileName = dir.GetFiles("*.xls");
                foreach (FileInfo tempFi in allFileName)
                {
                    if (tempFi.Name == fileName)
                    {
                        mark = true;
                        Thread.Sleep(500);
                        break;
                    }
                }
            } while (mark == true);
            //fileName = speFileName + fileTypeNum.ToString() + ".xls";
            outFileStream = File.Open(save_dir + "\\" + fileName, FileMode.Create, FileAccess.Write);   //创建文件流
            saveWriter = new StreamWriter(outFileStream,System.Text.Encoding.Default);
            isOpenFile = true;
        }

        private int changeDirCount = 100;//跟换目录时的文件个数
        protected String createNewDirectory(string dir)
        {
            int fileNum = 0;
            DateTime fileDate;
            String fileNameDate;
            String dir_name;
            DirectoryInfo Dir_info;
            do
            {
                fileDate = DateTime.Now;
                fileNameDate = fileDate.Date.ToString("yyyyMMdd");

                dir_name = dir + "\\" + fileNameDate + " "+ dirNum.ToString();

                if (!Directory.Exists(dir_name))
                {
                    Directory.CreateDirectory(dir_name);
                    return dir_name;
                }
                Dir_info = new DirectoryInfo(dir_name);
                FileInfo[] allFileName = Dir_info.GetFiles("*.xls");
                foreach (FileInfo fi in allFileName)
                {
                    fileNum++;
                }

                if (fileNum < changeDirCount)
                {
                    return dir_name;
                }
                else
                {
                    fileNum = 0;
                    dirNum++;
                }
            } while (true);
        }
    }
}

你可能感兴趣的:(c#保存数据到Excel表-简单方式)