Exemplo n.º 1
0
        private void fileRun(Object o)
        {
            string[] fileNames = this.fileNames;

            List <string> newFileNames = new List <string>(fileNames.Length);

            for (int i = 0; i < fileNames.Length; i++)
            {
                string fileName    = fileNames[i].Substring(fileNames[i].LastIndexOf("\\") + 1);
                string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);

                string filter = "xls,xlsx";
                if (!filter.Contains(fileNameExt))//文件类型不满足条件
                {
                    MessageBoxEx.Show(this, "文件格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
                }
                else
                {
                    newFileNames.Add(fileNames[i]);
                }
            }
            //提取excel数据,并把数据绑定到grid中

            this.localEmails = myUtils.extractExcelData(newFileNames, saveFilePath);


            //把邮件信息缓存起来,方便发送的时候使用
            myUtils.addOrUpdateCache(SysConstant.CACHE_EMAILS, this.localEmails);

            //执行回调
            FileCallBackDelegate cbd = o as FileCallBackDelegate;

            cbd(this.localEmails);
        }
Exemplo n.º 2
0
        private void FileCallBack(List <Email> emails)
        {
            if (this.dataGridView1.InvokeRequired)
            {                                 //不同一个线程
                FileCallBackDelegate fc = new FileCallBackDelegate(FileCallBack);
                Invoke(fc, this.localEmails); //执行唤醒操作
            }
            else
            {//同一个线程
                this.bs.DataSource            = this.localEmails;
                this.dataGridView1.DataSource = this.bs;
            }

            //把文件选择框和文件夹选择线程关闭
            for (int i = 0; i < this.threadList.Count; i++)
            {
                if (this.threadList[i].Name.Equals("file") || this.threadList[i].Name.Equals("folder"))
                {
                    if (this.threadList[i].IsAlive)
                    {
                        this.threadList[i].Abort();
                        this.threadList.Remove(this.threadList[i]);
                    }
                }
            }
            //资源回收
            GC.Collect();
        }
Exemplo n.º 3
0
        /// <summary>
        /// 文件选择框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 文件ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.Multiselect = true;
            dialog.Title       = "选择文件";
            dialog.Filter      = "*.xls|*.xls|*.xlsx|*.xlsx";
            DialogResult dr = dialog.ShowDialog();

            if (dr == DialogResult.OK)
            {
                DialogResult result = MessageBoxEx.Show(this, "确定要导入该数据吗?导入数据可能会花一段时间,请耐心等待!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                if (result == DialogResult.OK)
                {
                    this.fileNames = dialog.FileNames;

                    //新开一个线程,用来操作文件的读取
                    FileCallBackDelegate cbc = FileCallBack;
                    Thread threadFile        = new Thread(new ParameterizedThreadStart(fileRun));
                    threadFile.IsBackground = true;
                    threadFile.Name         = "file";
                    threadFile.Start(cbc);
                    this.threadList.Add(threadFile);
                }
            }
        }
Exemplo n.º 4
0
        private void folderRun(Object o)
        {
            DirectoryInfo TheFolder = new DirectoryInfo(this.folderFullName);

            List <string> listFolder = new List <string>();

            listFolder.Add(this.folderFullName);
            List <string> listFile = new List <string>();

            //遍历文件夹
            foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories())
            {
                listFolder.Add(NextFolder.FullName);
            }

            for (int i = 0; i < listFolder.Count; i++)
            {
                DirectoryInfo folder = new DirectoryInfo(listFolder[i]);
                //遍历文件
                foreach (FileInfo NextFile in folder.GetFiles())
                {
                    string fileFullName = NextFile.FullName;
                    //只获取excel文件
                    string fileName    = fileFullName.Substring(fileFullName.LastIndexOf("\\") + 1);
                    string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);

                    string filter = "xls,xlsx";
                    if (filter.Contains(fileNameExt))
                    {
                        listFile.Add(fileFullName);
                    }
                }
            }

            if (listFile.Count == 0)
            {
                MessageBoxEx.Show(this, "没有需要导入的文件!", "提示", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Warning);
                return;
            }

            //提取excel数据,并把数据绑定到grid中
            this.localEmails = myUtils.extractExcelData(listFile, saveFilePath);


            //把邮件信息缓存起来,方便发送的时候使用
            myUtils.addOrUpdateCache(SysConstant.CACHE_EMAILS, this.localEmails);

            //执行回调
            FileCallBackDelegate cbd = o as FileCallBackDelegate;

            cbd(this.localEmails);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 文件夹选择框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 文件夹ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            DialogResult        dr     = dialog.ShowDialog();

            if (dr == DialogResult.OK)
            {
                DialogResult result = MessageBoxEx.Show(this, "确定要导入该数据吗?导入数据可能会花一段时间,请耐心等待...", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                if (result == DialogResult.OK)
                {
                    this.folderFullName = dialog.SelectedPath;

                    //新开一个线程,用来操作文件的读取
                    FileCallBackDelegate cbc = FileCallBack;
                    Thread threadFolder      = new Thread(new ParameterizedThreadStart(folderRun));
                    threadFolder.IsBackground = true;
                    threadFolder.Name         = "folder";
                    threadFolder.Start(cbc);
                    this.threadList.Add(threadFolder);
                }
            }
        }