6

Easy WPF Copy/Paste Excel

 2 years ago
source link: https://www.codeproject.com/Articles/1172338/Easy-WPF-Copy-Paste-Excel
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Introduction

I have developed an easy way to copy/paste data between WPF application and Excel. This code's compatibility for the controls inherit from System.Windows.Controls.ItemsControls - these are the controls with the ItemsSource property. Controls of this type are DataGrid, ListBox, ListView, etc.

Is OpendSource and its code is in GitHub.

Its use is very easy, we will install the utility by nuget and we will setup any properties of our control in the XAML code.

This is how it works:

Image 1

Prerequisites

The utility has been tested in WPF applications, and we don’t know if run in (Silverlight, WP or WUP) apps.

It is necessary 4.5.2 NET Framework version or later.

Installation

We will install from nuget:

Image 2

SetUp

After installation has been completed, we will setup the WPF window. We will add the next import in XAML:

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

We will add the following properties in the ItemsControl in XAML:

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

This simple code enabled the copy/paste data between DataGrid control and Excel.

Image 3

In terms of its simple form, we will make the actions with the keyboard:

  • Ctrl + A -> CopyAll -> Copy all DataGrid Rows
  • Ctrl + C -> Copy Selected -> Copy DataGrid selected Rows.
  • Ctrl + P -> Paste -> Paste data in DataGrid.

Other AttachProperties

We can add functionality with the next AttachProperties:

Copy Code
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"

CreateContextMenu

Enabled or disabled showed the context menu in the ItemsControl.

Copy Code
ml:ExcelActions.CreateContextMenu="True"

True is its default value.

Image 4

ContainsHeader

Enabled or disabled copy control headers.

Copy Code
ml:ExcelActions.ContainsHeader="False"

True is its default value.

Image 5

PaintFlash

Show or hide the color flash mark in the control that occurs when we copy or paste in the control.

Copy Code
ml:ExcelActions.PaintFlash="True"

Image 6

ColorFlash

Setup the color of flash of Copy Paste Action (is only visible if the property PaintFlash is true).

Copy Code
ml:ExcelActions.ColorFlash="Yellow"

Bruhes.Gray is its default value.

ShowErrorMessages

This property specifies whether show error message if an errors occurs. For example, if the data copied isn’t compatibility with the datasource of control.

Copy Code
ml:ExcelActions.ShowErrorMessages="True"

True is its default value.

Image 7

In moving:

Image 8

CancelWithErrors

When we copy many rows from Excel, if any row isn’t correct and if an error occurs, this property specifies if paste the correct rows or don’t paste any row.

  • True -> Paste correct rows
  • False -> Don’t paste anything

True is a default value.

Image 9

Recommendations

It is necessary that the ItemsSource property of ItemsControl is an ObservableCollection type, because this type refreshes the items correctly and informs the remove and add changes.

Limitations

In this version, in the paste action, only insert data, doesn’t update the rows, or paste incomplete types.

If someone wants, ask me and I will develop this part.

History

  • 23rd February, 2017: Initial version

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK