2015-07-06 253 views
0

我從excel中複製數據並將其粘貼到窗體上,並點擊按鈕。從Excel複製粘貼

從excel複製的數據正在被拆分並填充四個文本框。所有的texbox都按預期填充,但最後一個文本框獲得額外的「\ r \ n」。 它不會顯示在文本框中,但如果我放置了斷點並查看變量,那麼還有額外的\ r \ n。

我抓住的變量看起來像這個測試\ r \ n。

我知道我可以用「」替換它,但是有沒有辦法避免這種情況發生。

這裏是我的粘貼事件處理程序的代碼。

if (Clipboard.GetText() != null) 
      { 
       string s = Clipboard.GetText(); 
       string[] lines = s.Split('\t'); 
       if (lines.Length < 3) 
       { 
        DialogResult result = MsgBox.Show("Please copy valid data with tab space.", "Incorrect data format.", MsgBox.Buttons.OK, MsgBox.Icon.Exclamation, MsgBox.AnimateStyle.ZoomIn); 
        //MessageBox.Show("Please copy valid data with tab space.", "Incorrect data format.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); 
       } 

       else 
       { 
        green_textBox_ref.Text = lines[0].Replace(" ", ""); 
        green_textBox1.Text = lines[1].Replace(" ", ""); 
        green_textBox2.Text = lines[2].Replace(" ", ""); 
        green_textBox3.Text = lines[3].Replace(" ", ""); 
        green_textBox_ref.Enabled = false; 
        green_textBox1.Enabled = false; 
        green_textBox2.Enabled = false; 
        green_textBox3.Enabled = false; 
        paste_green.Enabled = false; 
       } 
      } 

      else 
      { 
       DialogResult result = MsgBox.Show("There is no data to paste.", "No data", MsgBox.Buttons.OK, MsgBox.Icon.Error, MsgBox.AnimateStyle.ZoomIn); 
       //MessageBox.Show("There is no data to paste.", "No data", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); 

      } 

     } 

這裏是斷點的截圖。

enter image description here

+1

嗯..不知道你能控制的方式Excel的看跌期權數據到剪貼板上。看起來你可以使用'string.Trim'方法,儘管... – Baldrick

回答

1

你可以刪除結尾行換行幾種不同的方式。既然你已經分割了字符串,你可以告訴它把新行作爲額外的分隔符,並刪除空的子字符串。

string[] lines = 
    s.Split(new[] {"\t", Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries); 

或者,你可以使用TrimEnd()修剪特定的字符掉一個字符串的結尾。

green_textBox3.Text = lines[3].Replace(" ", "").TrimEnd('\r', '\n'); 

我懷疑有一種方法,以防止它被包含在剪貼板上,當您從Excel中複製。

0

正如你無法避免\ t,你無法避免得到\ r \ n。這就是粘貼客戶端使用\ t \ r和\ n知道表格數據的方式。

如果您複製具有多行的Excel範圍,您將獲得很多\ r \ n。

最好是使用String.Replace方法刪除\ r \ n。

0

Excel單元格中的新行是CR字符,它是C#中的「\ r」。

GSerghttp回答。

您可以通過刪除多餘的內容:

s.ToString().TrimEnd('\r', '\n'); 

或更換:

text = text.Replace("\r\n", ""); 

例子:

string OriginString = "\r\n\r\nText goes here\r\n"; 
string NewString = OriginString.Replace("\r\n", "");