C# 进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很

C# 进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很,c#,vba,winforms,ms-word,rtf,C#,Vba,Winforms,Ms Word,Rtf,进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很想投票支持这一点。抱歉这么懒;-)谢谢你的评论。我可以复制你的测试。当我们选择将文本置于单元格的中心时,一个不可见的字符将添加到该单元格中。如果我们单击一个空单元格,光标将位于中心。如果按Backspace键,中心格式将消失,光标将移到左侧。当


进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很想投票支持这一点。抱歉这么懒;-)谢谢你的评论。我可以复制你的测试。当我们选择将文本置于单元格的中心时,一个不可见的字符将添加到该单元格中。如果我们单击一个空单元格,光标将位于中心。如果按Backspace键,中心格式将消失,光标将移到左侧。当我们选择多个单元格(粘贴到其中)时,隐藏字符也会被选中,并被剪贴板中的数据替换。在您的情况下,如果使用Shift+End复制源单元格的文本,则中心的隐藏字符也会被复制,您可以粘贴到多行。
Clipboard.SetDataObject(this.dataGridView1.GetClipboardContent());
{\rtf1\ansi\qc
This is some centered text.}
Clipboard.SetData(DataFormats.Rtf, "{\\rtf1\\qc\n{\\b foo}}");
    void CopyColumn()
    {
        if (this.dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
        {
            try
            {
                Clipboard.SetDataObject(this.dataGridView1.GetClipboardContent());

                string sText = Clipboard.GetText();
                string sColumn = FormatColumn(sText);

                Clipboard.SetData(DataFormats.Rtf, sColumn); // this will set the proper format of the Uncertainty column in clipboard memory 
            }
            catch (System.Runtime.InteropServices.ExternalException)
            {
                MessageBox.Show("The Clipboard could not be accessed. Please try again.");
            }
        }
    }

    string FormatColumn(string sValues)
    {
        int nlines = NumLines(sValues);
        string[] values = Values(sValues);

        string sStart = @"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang3081{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}}
        string sEnd = "}";

        string sRowStart = @"\trowd\trgaph85\trleft5\trbrdrl\brdrs\brdrw10 \trbrdrt\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trpaddl85\trpaddr85\trpaddfl3\trpaddfr3
        string sRowEnd = @"\cell\row";

        string sFormattedColumn = sStart;
        string sRow = string.Empty;

        for(int i = 0; i < nlines; i++) {
            sRow = sRowStart + values[i] + sRowEnd;
            sFormattedColumn += sRow;
        }

        sFormattedColumn += sEnd;
        return sFormattedColumn;
    }

    int NumLines(string sValue)
    {
        string[] values = sValue.Split('\r');
        return values.Length;
    }

    string[] Values(string sValue)
    {
        string[] values = sValue.Split('\r');
        for(int i = 0; i < values.Length; i++) {
            values[i] = values[i].Replace("\n", "");
        }

        return values;
    }