我正在从excel复制数据并通过点击按钮将其粘贴到Windows窗体。
正在拆分来自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);
}
}
这是断点的截屏。
答案 0 :(得分:1)
您可以通过几种不同的方式删除该结束行换行符。由于您已经拆分了字符串,因此您可以告诉它将换行视为一个额外的分隔符,并删除空的子字符串。
string[] lines =
s.Split(new[] {"\t", Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
或者,您可以使用TrimEnd()
修剪字符串末尾的特定字符。
green_textBox3.Text = lines[3].Replace(" ", "").TrimEnd('\r', '\n');
我怀疑当你从Excel复制时,有办法防止它被包含在ClipBoard中。
答案 1 :(得分:0)
尽管你不能避免\ t,但你不能避免\ r \ n。这就是粘贴客户端使用\ t \ r和\ n。
了解表格数据的方式如果您复制具有多个行的Excel范围,您将获得许多\ r \ n。
最好是使用String.Replace
方法删除\ r \ n。
答案 2 :(得分:0)
Excel单元格中的新行是CR字符,它是&#34; \ r&#34;在C#。
由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", "");