65.9K
CodeProject 正在变化。 阅读更多。
Home

简单 WPF 复制/粘贴 Excel

2017 年 2 月 23 日

CPOL

2分钟阅读

viewsIcon

36275

downloadIcon

503

在 WPF 应用程序和 Excel 之间轻松复制和粘贴数据的简单方法。

引言

我开发了一种在 WPF 应用程序和 Excel 之间复制/粘贴数据的一种简单方法。这段代码与继承自 System.Windows.Controls.ItemsControls 的控件兼容 - 这些是具有 ItemsSource 属性的控件。这种类型的控件包括 DataGridListBoxListView 等。

它是 OpendSource 并且代码在 GitHub 上。

它的使用非常简单,我们将通过 nuget 安装该实用程序,并在 XAML 代码中设置控件的任何属性。

它的工作方式如下

必备组件

该实用程序已在 WPF 应用程序中进行了测试,我们不知道它是否可以在 (Silverlight, WP 或 WUP) 应用程序中运行。

需要 4.5.2 NET Framework 版本或更高版本。

安装

我们将从 nuget 安装

SetUp

安装完成后,我们将设置 WPF 窗口。 我们将在 XAML 中添加以下导入

xmlns:ml="clr-namespace:MoralesLarios.Utilities.Excel;assembly=MoralesLarios.Utilities"

我们将在 XAML 中的 ItemsControl 中添加以下属性

<DataGrid x:Name="dataGrid" 
          ml:ExcelActions.EnabledCopyExcel ="True"  <!—- enabled copy/copiall excel  -->
          ml:ExcelActions.EnabledPasteExcel="True"  <!—- enabled paste        excel  -->
          />

这段简单的代码实现了 DataGrid 控件和 Excel 之间的数据复制/粘贴。

考虑到其简单的形式,我们将使用键盘进行操作

  • Ctrl + A -> 复制全部 -> 复制所有 DataGrid
  • Ctrl + C -> 复制选中项 -> 复制 DataGrid 选定的行。
  • Ctrl + P -> 粘贴 -> 将数据粘贴到 DataGrid 中。

其他附加属性

我们可以使用以下 AttachProperties 添加功能

ml:ExcelActions.EnabledCopyExcel  ="True" 
ml:ExcelActions.EnabledPasteExcel ="True" 
ml:ExcelActions.ContainsHeader    ="False"
ml:ExcelActions.CreateContextMenu ="True"
ml:ExcelActions.CancelWithErrors  ="False"
ml:ExcelActions.PaintFlash        ="True"
ml:ExcelActions.ColorFlash        ="Yellow"
ml:ExcelActions.ShowErrorMessages ="True"

创建上下文菜单

启用或禁用在 ItemsControl 中显示上下文菜单。

ml:ExcelActions.CreateContextMenu="True"

其默认值为 True

包含标题

启用或禁用复制控件标题。

ml:ExcelActions.ContainsHeader="False"

其默认值为 True

绘制闪烁

显示或隐藏在控件中复制或粘贴时发生的颜色闪烁标记。

ml:ExcelActions.PaintFlash="True"

颜色闪烁

设置复制粘贴操作的闪烁颜色(仅当 PaintFlash 属性为 true 时可见)。

ml:ExcelActions.ColorFlash="Yellow"

其默认值为 Bruhes.Gray

显示错误消息

此属性指定是否在发生错误时显示错误消息。 例如,如果复制的数据与控件的数据源不兼容。

ml:ExcelActions.ShowErrorMessages="True"

其默认值为 True

正在进行中

取消带错误

当我们从 Excel 复制多行时,如果任何行不正确并且发生错误,此属性指定是粘贴正确的行还是不粘贴任何行。

  • True -> 粘贴正确的行
  • False -> 什么也不粘贴

默认值为 True

建议

ItemsControlItemsSource 属性必须是 ObservableCollection 类型,因为这种类型可以正确刷新项目并通知删除和添加更改。

限制

在本版本中,在粘贴操作中,仅插入数据,不更新行,也不粘贴不完整类型。

如果有人需要,请告诉我,我会开发这部分内容。

历史

  • 2017 年 2 月 23 日:初始版本
© . All rights reserved.