private void MakePersonTaskGrid(PersonsTask personTask) { this.DgvMember.Rows.Clear(); int row = 0; //名前順にソート→ (親チケット)を先頭にする var sort = new SortedDictionary <string, List <float> >(personTask.NameDic); foreach (var pt in sort) { string name = pt.Key; // 担当者 this.DgvMember.Rows.Add(name); // タスク数 this.DgvMember.Rows[row].Cells[1].Value = pt.Value.Count.ToString(); // 進捗率 this.DgvMember.Rows[row].Cells[2].Value = Convert.ToInt32(personTask.GetAverageProgress(name)); row++; } this.DgvMember.SetGroupTextRowCount(); }
private void CsvReader() { var rowDicList = new List <Dictionary <int, string> >(); var personsTask = new PersonsTask(); this.ParentList = new List <string>(); try { using (StreamReader sr = new StreamReader(this.m_ReadFile, m_Encod)) { string line; for (int row = 0; (line = sr.ReadLine()) != null; row++) { // カラム名をスキップ if (row == 0) { if (line != this.ReadableCsvWord) { MessageBox.Show( "RedmineのCSVは「すべての項目」を選択したファイルを使用してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } continue; } string[] values = line.Split(','); // 横ライン分 var dataDic = new Dictionary <int, string>(); for (int column = 0; column < values.Length; column++) { // 不要データの除外 if (UseCsv.Tbl[column] == 0) { continue; } // 本体データの取得 dataDic.Add(column, values[column]); #region 担当者別の進捗情報の取得 if (column == UseCsv._PERSON_NAME) { string progressName = this.Nobody; if (values[UseCsv._PERSON_NAME] != "\"\"") { progressName = values[UseCsv._PERSON_NAME]; } else { progressName = this.Nobody; } int rate = Convert.ToInt32(values[UseCsv._PROGRESS_RATE]); if (!personsTask.IsNewPerson(progressName, rate)) { personsTask.AddProgress(progressName, rate); } } #endregion 担当者別の進捗情報の取得 if (column == UseCsv._PARENT) { this.ParentList.Add(values[UseCsv._PARENT]); } } rowDicList.Add(dataDic); } } } catch (IOException e) { MessageBox.Show("Excelで開いている場合は閉じてから使ってください\r\n" + e.Message, "エラー", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } catch (Exception e) { MessageBox.Show("例外が発生", "エラー\r\n" + e.Message, MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } MakeProgressRow(rowDicList); MakePersonTaskGrid(personsTask); MakeNoLimitTaskGrid(); }