天天看点

WPF 导出DataGrid内容到CV文件

1. 创建一个DataGrid

创建4列不同类型的列,Text,ComboBox, CheckBox,Hyperlink,基本覆盖了DataGrid的所有列类型。

<DataGrid x:Name=“dg” Grid.Column=“2” Margin=“5” AutoGenerateColumns=“False” SelectionUnit=“Cell”

SelectionMode=“Extended” ItemsSource="{Binding}">

<DataGrid.Columns>

</DataGrid.Columns>

创建数据模型类型,再创建类的集合绑定到DataGird。

WPF 导出DataGrid内容到CV文件

2. 导出DataGrid内容到CSV文件中

创建DataGrid导出的扩展方法。

using Excel = Microsoft.Office.Interop.Excel;

using Microsoft.Office.Interop.Excel;

using System.Windows;

using System.Windows.Input;

using System.Diagnostics;

using Microsoft.Win32;

using System.Windows.Controls;

using System.IO;

扩展方法必须是静态类:

//扩展方法

public static class ExportTools

{

public static void Export_To_Excel(this DataGrid dg, string filename = “”)

{

try

{

dg.SelectionMode = DataGridSelectionMode.Extended;

dg.SelectAllCells();

Clipboard.Clear();

ApplicationCommands.Copy.Execute(null, dg);

var saveFileDiaog = new SaveFileDialog

{

FileName = filename != “” ? filename : “demo”,

DefaultExt = “.csv”,

Filter = “Common Separated Document(.csv)|*.csv”

};

if (saveFileDiaog.ShowDialog() == true)

{

var clip2 = Clipboard.GetText();

File.WriteAllText(saveFileDiaog.FileName, clip2.Replace(’\t’, ‘,’), Encoding.UTF8);

Process.Start(saveFileDiaog.FileName);

}

dg.UnselectAllCells();

dg.SelectionMode = DataGridSelectionMode.Single;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

Clipboard.Clear();

}

}

}

调用扩展方法:

//使用扩展方法将DataGrid数据导出到csv

this.dg.Export_To_Excel(“Mydemo”);

WPF 导出DataGrid内容到CV文件
WPF 导出DataGrid内容到CV文件

导出成功。