Exemple #1
0
        //检测
        private void btnCheck_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openfileDlg = new OpenFileDialog();

            openfileDlg.Title  = "打开要作为会员树数据源的文件";
            openfileDlg.Filter = "CSV文件|*.csv";
            if (openfileDlg.ShowDialog() == true)
            {
                allCount         = 0;
                errCount         = 0;
                txtErrLines.Text = "";
                filepath         = openfileDlg.FileName;
                Encoding     encoding = TextUtil.GetFileEncodeType(filepath);
                StreamReader mysr     = new StreamReader(filepath, encoding);
                filepath = filepath.Replace(".csv", "_1.csv");
                StreamWriter mysw = new StreamWriter(filepath, false, Encoding.UTF8);

                try
                {
                    SetStatusMessage("开始读取文件......");

                    string firstLine = mysr.ReadLine();     //第一行是表头,读取之后不处理,直接跳过
                    if (CheckHead(firstLine))
                    {
                        mysw.WriteLine(firstLine);

                        while (!mysr.EndOfStream)
                        {
                            string line = mysr.ReadLine();
                            Line2TreeNode(line, mysw);
                        }

                        if (txtErrLines.Text == "")
                        {
                            btnSave.IsEnabled = false;
                            SetStatusMessage("检查完成,正确数据行数:" + allCount + ",出错数据行数:" + errCount);
                            MessageBox.Show("恭喜,该文件没有错误,可以直接导入计算!");
                        }
                        else
                        {
                            btnSave.IsEnabled = true;
                            SetStatusMessage("检查完成,正确数据行数:" + allCount + ",出错数据行数:" + errCount + ",错误数据都存储在下面的文本框中。");
                            MessageBox.Show("该文件出现了多处错误,错误数据都存储在下面的文本框中,请将这些错误人工校准之后重新填回文本框中,点击“修改保存到文件”按钮");
                        }
                    }
                }
                catch (Exception ex)
                {
                    SetStatusMessage("文件读取出错!+\n" + ex.Message);
                    return;
                }
                finally
                {
                    mysr.Close();
                    mysw.Close();
                }
            }
        }
Exemple #2
0
        private static void Write2DB(string filepath, string dbName, string separator)
        {
            if (treeDB.CreateDB(dbName))
            {
                int          row      = 0;
                Encoding     encoding = TextUtil.GetFileEncodeType(filepath);
                StreamReader mysr     = new StreamReader(filepath, encoding);
                treeDB.BeginInsert();
//	            try
//	            {
                string line = mysr.ReadLine();
                while (!mysr.EndOfStream)
                {
                    line = mysr.ReadLine();
                    string[] aryline = line.Split(new String[] { separator }, StringSplitOptions.None);
                    treeDB.InsertNodes(MyTrees.allNodes[aryline[0]], aryline);

                    row++;
                    if (row % 100 == 0)
                    {
                        treeDB.TransCommit(false);
                        WindowAdmin.notify.SetProcessBarValue(row * 100.0 / allNodeCount);
                        WindowAdmin.notify.SetStatusMessage("【第一步:读取数据完成】——>【第二步:构造树结构完成】——>【第三步:正在写入数据库" + row + "/" + allNodeCount + "】");
                    }
                }
                treeDB.TransCommit(true);

                WindowAdmin.notify.SetStatusMessage("【第一步:读取数据完成】——>【第二步:构造树结构完成】——>【第三步:正在创建数据库索引。。。】");
                treeDB.CreateIndex();

                WindowAdmin.notify.SetStatusMessage("【第一步:读取数据完成】——>【第二步:构造树结构完成】——>【第三步:正在写入数据概要信息。。。】");
                treeDB.CreateProfile();

                WindowAdmin.notify.SetProcessBarVisible(false);
                WindowAdmin.notify.SetStatusMessage("计算完成!");
//	            }
//	            catch (Exception ex)
//	            {
//	                WindowAdmin.notify.SetProcessBarVisible(false);
//	                WindowAdmin.notify.SetStatusMessage("文件读取出错!+\n" + ex.Message);
//	            }
                mysr.Close();
            }
        }
Exemple #3
0
        private void readSysBcsv(object sender, DoWorkEventArgs e)
        {
            sysBids.Clear();
            string       csvPath  = e.Argument.ToString();
            Encoding     encoding = TextUtil.GetFileEncodeType(csvPath);
            StreamReader mysr     = new StreamReader(csvPath, encoding);
            int          count    = 1;

            try
            {
                string line;
                while (!mysr.EndOfStream)
                {
                    if (bgworker.CancellationPending)
                    {
                        e.Cancel = true;
                    }
                    else
                    {
                        line = mysr.ReadLine();
                        if (line != "")
                        {
                            sysBids.Add(line);
                        }
                        bgworker.ReportProgress(count++);
                    }
                }
                bgworker.ReportProgress(count, "第一步读取csv数据完成!");
            }
            catch (Exception ex)
            {
                bgworker.ReportProgress(count, "第一步出错:" + ex.Message + ex.StackTrace);
                hasError = true;
            }
            finally
            {
                mysr.Close();
            }
        }
Exemple #4
0
        //读取文件数据并构造树节点
        private static bool ReadLine2Node(string filepath, string separator, bool confirm)
        {
            Encoding     encoding = TextUtil.GetFileEncodeType(filepath);
            StreamReader mysr     = new StreamReader(filepath, encoding);
            int          row      = 0;

            try
            {
                WindowAdmin.notify.SetProcessBarVisible(true);
                WindowAdmin.notify.SetStatusMessage("开始读取文件......");

                string firstLine = mysr.ReadLine();                   //第一行是表头,读取之后不处理,直接跳过
                if (!DBUtil.CheckHead(firstLine, separator, confirm)) //检查表头
                {
                    string errMsg = "文件格式不正确,最少必须包含三列,前三列为“会员id,上级会员id,会员姓名”且顺序固定,请重新选择正确的文件!";
                    MessageBox.Show(errMsg);
                    WindowAdmin.notify.SetStatusMessage(errMsg);
                    mysr.Close();
                    return(false);
                }
                while (!mysr.EndOfStream)
                {
                    string   line    = mysr.ReadLine();
                    string[] aryline = line.Split(new String[] { separator }, StringSplitOptions.None);
                    if (!DBUtil.CheckLen(aryline))
                    {
                        //发现出错的数据
                        string errMsg = "该csv数据文件中包含错误数据,请先对csv文件进行检查校准!";
                        MessageBox.Show(errMsg);
                        WindowAdmin.notify.SetStatusMessage(errMsg);
                        mysr.Close();
                        return(false);
                    }

                    MyTreeNode myNode = new MyTreeNode(aryline[0], aryline[1]);

                    if (allNodes.ContainsKey(myNode.SysId))        //ID有重复的节点
                    {
                        IdConflictNodes.Add(myNode);
                    }
                    else
                    {
                        allNodes.Add(myNode.SysId, myNode);
                    }

                    row++;
                    if (row % 1000 == 0)
                    {
                        WindowAdmin.notify.SetStatusMessage("【第一步:正在读取第" + row + "个节点】——>【第二步:构造树结构】——>【第三步:写入数据库】");
                    }
                }

                allNodeCount = row;
            }
            catch (Exception ex)
            {
                WindowAdmin.notify.SetProcessBarVisible(false);
                WindowAdmin.notify.SetStatusMessage("文件读取出错!+\n" + ex.Message);
                mysr.Close();
                return(false);
            }

            mysr.Close();
            return(true);
        }