示例#1
0
    private void CopyCsvRowToDataRow(int rowIdx, string[] row, DataRow dataRow)
    {
        int changedCount = 0;

        System.Text.StringBuilder oldSb = new System.Text.StringBuilder();
        System.Text.StringBuilder newSb = new System.Text.StringBuilder();
        for (int iCell = 0; iCell < row.Length; iCell++)
        {
            string iterCell = row[iCell];
            string oldCell  = (string)dataRow[iCell];

            oldSb.Append(string.Format("\"{0}\"", oldCell));
            newSb.Append(string.Format("\"{0}\"", iterCell));
            if (iCell != row.Length - 1)
            {
                oldSb.Append(",");
                newSb.Append(",");
            }

            if (iterCell != oldCell)
            {
                changedCount++;
                CsvEditManager.CellValueChangeItem changeItem = new CsvEditManager.CellValueChangeItem();
                changeItem.Row      = rowIdx;
                changeItem.Column   = iCell;
                changeItem.OldValue = oldCell;
                changeItem.NewValue = iterCell;
                m_CellChangeList.Add(changeItem);

                dataRow[iCell] = iterCell;
            }

            if (string.IsNullOrWhiteSpace(iterCell))
            {
                DataGridViewConsoleForm.Message message = new DataGridViewConsoleForm.Message();
                message.Level   = DataGridViewConsoleForm.Level.Warning;
                message.Column  = iCell;
                message.Row     = rowIdx;
                message.Caption = "值为空";
                message.Text    = string.Format("源值:\n({0})", oldCell.ToString());
                m_MessageList.Add(message);
            }
        }

        if (changedCount > 0)
        {
            DataGridViewConsoleForm.Message message = new DataGridViewConsoleForm.Message();
            message.Level   = DataGridViewConsoleForm.Level.Info;
            message.Column  = -1;
            message.Row     = rowIdx;
            message.Caption = string.Format("修改了({0})个单元格", changedCount);
            message.Text    = string.Format("源:\n({0})\n合并后:\n({1})", oldSb.ToString(), newSb.ToString());
            m_MessageList.Add(message);
        }
    }
示例#2
0
    /// <summary>
    /// 移除所有制表符并转换所有换行符
    /// </summary>
    public void RemoveAllTabAndConvertAllLineBreaks()
    {
        BeforeChangeCellValue();

        List <CsvEditManager.CellValueChangeItem> changeList  = new List <CsvEditManager.CellValueChangeItem>();
        List <DataGridViewConsoleForm.Message>    messageList = new List <DataGridViewConsoleForm.Message>();

        for (int rowIdx = 0; rowIdx < m_DataGridView.Rows.Count; rowIdx++)
        {
            DataGridViewRow iterRow = m_DataGridView.Rows[rowIdx];
            for (int colIdx = 0; colIdx < iterRow.Cells.Count; colIdx++)
            {
                DataGridViewCell iterCell  = iterRow.Cells[colIdx];
                string           iterValue = (string)iterCell.Value;
                if (!string.IsNullOrEmpty(iterValue))
                {
                    string newValue = iterValue.Replace("\t", "");
                    newValue = newValue.Replace("\r\n", "\n");

                    if (iterValue != newValue)
                    {
                        CsvEditManager.CellValueChangeItem change = new CsvEditManager.CellValueChangeItem();
                        change.Row      = rowIdx;
                        change.Column   = colIdx;
                        change.OldValue = iterValue;
                        change.NewValue = newValue;
                        changeList.Add(change);

                        DataGridViewConsoleForm.Message message = new DataGridViewConsoleForm.Message();
                        message.Level = DataGridViewConsoleForm.Level.Info;
                        int indexOfTab = iterValue.IndexOf('\t');
                        if (indexOfTab > 0 && indexOfTab < iterValue.Length - 1)
                        {
                            message.Level = DataGridViewConsoleForm.Level.Warning;
                        }
                        message.Row     = rowIdx;
                        message.Column  = colIdx;
                        message.Caption = "移除制表符并转换换行符";
                        message.Text    = string.Format("源:\n({0})\n转换后:\n({1})", iterValue, newValue);
                        messageList.Add(message);

                        iterCell.Value = newValue;
                    }
                }
            }
        }
        EditManager.DidCellsValueChange(changeList);

        AfterChangeCellValue();

        DataGridViewConsoleForm.ShowForm(messageList, m_DataGridView, "移除所有制表符并转换所有换行符");
        MessageBox.Show(string.Format("移除所有制表符并转换所有换行符完成, 转换了({0})个单元格", messageList.Count), "提示");
    }