将字典 <String, String> 复制到 Excel 的剪贴板

Copy Dictionary<String, String> to clipboard for Excel

我正在尝试编写一个工具来比较两个字符串表并找到一个值在一个表中而不在另一个表中。我有应用程序,因此它可以正确获取所有这些值,我将它们存储在 Dictionary<string, string> 中,并使用它在我的 XAML.

中的 GridView 上显示它

然后我发现你必须手动将复制代码添加到 GridView,所以我想我只需要一个按钮来复制字典的全部内容,但现在我遇到了一个问题,当我尝试将它复制到 excel 它只产生一列值,我需要键是一列而值是另一列。

到目前为止,这是我的复制代码:

        if (ToTranslate.Count != 0)
        {
            var sb = new StringBuilder();
            foreach (var item in ToTranslate)
            {
                sb.Append(item.Key + ", ");
                sb.AppendLine(item.Value);
            }

            System.Windows.Clipboard.SetData(DataFormats.Text, sb.ToString());
        }

我已经尝试了很多其他的方法,例如 item.string,将它们放在方括号中但仍然不起作用。我也试过修剪方括号,但这仍然不起作用。

我原以为它会像打开 csv 时那样选择逗号作为分隔符,但事实并非如此。

我不知道这是否有帮助,但这是我的 xaml

        <ListView ItemsSource="{Binding Results}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Key}" />
                    <GridViewColumn Header="Text" Width="Auto" DisplayMemberBinding="{Binding Value}" />                        
                </GridView>
            </ListView.View>
        </ListView>

Excel 喜欢制表符作为分隔符。 要导入 CSV,您需要 Excel 的导入助手,只有在您打开包含 CSV 数据的文件时才会打开。

无论如何,使用制表符都很好。