从 Excel 复制粘贴

Copy Paste from Excel

我正在从 excel 复制数据并通过单击按钮将其粘贴到 windows 表单。

正在拆分从 excel 复制的数据并填充四个文本框。所有文本框都按预期填充,但最后一个文本框得到额外的“\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);

            }

        }

这里是断点的截图。

您可以通过几种不同的方式删除结束行换行符。由于您已经在拆分字符串,您可以告诉它将换行符视为附加分隔符,并删除空子字符串。

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

或者,您可以使用 TrimEnd() 到 trim 字符串末尾的特定字符。

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

我怀疑当您从 Excel.

复制时,是否有办法防止它被包含在剪贴板上

因为你无法避免\t,所以你无法避免得到\r\n。这就是粘贴客户端使用 \t \r 和 \n 了解表格数据的方式。

如果您复制一个 Excel 范围,其中有多行,您将得到许多 \r\n。

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

Excel 单元格中的新行是 CR 字符,在 C# 中为“\r”。

如 所回答。

您可以通过以下方式删除多余的内容:

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", "");