首发于 自学编程

WPF 导出DataGrid内容到CSV文件

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>

<DataGridTextColumn Header="Name" Width="100" Binding="{Binding Name}"/>

<DataGridTextColumn Header="Age" Width="80" Binding="{Binding Age}"/>

<DataGridComboBoxColumn Header="Sex" Width="80" SelectedItemBinding="{Binding Sex}" ItemsSource="{Binding Source={StaticResource sexEnum}}"/>

<DataGridCheckBoxColumn Header="Pass? Exame" Width="100" Binding="{Binding Pass}"/>

<DataGridHyperlinkColumn Header="Email" Width="200" Binding="{Binding Email}"/>

</DataGrid.Columns>

</DataGrid>

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

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");

导出成功。

编辑于 2022-01-19 22:20

文章被以下专栏收录