做WinForm开发离不开一些基本的控件,作为数据列表显示控件中,其中最为重要的要数 DataGridView,以前用的是一些第三方控件,提供了比较灵活和方便的功能,比如:根据所见即所得导出数据到Excel 或者 文本,没办法自力更生才是生存之道。
DataGridView的数据导出功能在网络上搜索后,有一些同仁实现过,但有些是需要依赖Excel ,这种方式不但耦合性强,性能也差,为了一劳永逸的解决这个问题,特改写了代码,在此提供给各位同仁,欢迎斧正。
1、首先,看使用方法:
dgvProjectList.ExportToExcel();
或者
dgvProjectList.ExportToExcel("项目列表");
如果不使用数据导出功能,不会对现有 DateGridView控件产生任何负作用,也不占用内存;
2、扩展方法定义:
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> /// <summary> /// 将表格数据导出到csv表格文件中 /// </summary> /// <param name="dgv"></param> public static void ExportToExcel(this DataGridView dgv) { ExportToExcel(dgv, "表格数据"); } /// <summary> /// 将表格数据导出到csv表格文件中 /// </summary> /// <param name="dgv"></param> public static void ExportToExcel(this DataGridView dgv, string fileName) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "表格数据文件(*.csv)|*.csv"; sfd.FileName = string.Format("{0}.csv", fileName); if (sfd.ShowDialog() == DialogResult.OK) { fileName = sfd.FileName; ExportHelper.ExportDetails(dgv.GetDataTable(), ExportHelper.ExportFormat.CSV, fileName, ExportHelper.ApplicationType.WindowsForm); } } /// <summary> /// 将表格数据导出到文本文件中 /// </summary> /// <param name="dgv"></param> public static void ExportToText(this DataGridView dgv) { ExportToText(dgv, "表格数据"); } /// <summary> /// 将表格数据导出到文本文件中 /// </summary> /// <param name="dgv"></param> public static void ExportToText(this DataGridView dgv, string fileName) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "文本文件(*.txt)|*.txt"; sfd.FileName = string.Format("{0}.txt", fileName); if (sfd.ShowDialog() == DialogResult.OK) { fileName = sfd.FileName; ExportHelper.ExportDetails(dgv.GetDataTable(), ExportHelper.ExportFormat.TXT, fileName, ExportHelper.ApplicationType.WindowsForm); } }
3、导出类定义:
1 //导出辅助类