将DataGrid转换成DataTabel,我这里因为项目的特殊性,这样转换,也有其他方法直接转换。

public void Export(DataGrid dgData, DataTable dataTable, string excelTitle){DataTable dt = new DataTable();for (int i = 0; i < dgData.Columns.Count; i++){if (dgData.Columns[i].Visibility == System.Windows.Visibility.Visible)//只导出可见列  {dt.Columns..Add(dgData.Columns[i].Header.ToString());//构建表头  }}for (int i = 0; i < dataTable.Rows.Count; i++){dt.Rows.Add(dataTable.Rows[i].ItemArray);              //添加数据行}ExcelExport(dt, excelTitle);}

然后可直接调用下列函数:

/// <summary>/// datatable表格导出到Excel/// </summary>/// <param name="DT">datatable表格</param>/// <param name="title">标题字符串</param>/// <returns></returns>public string ExcelExport(System.Data.DataTable DT, string title){try{//创建ExcelMicrosoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();Microsoft.Office.Interop.Excel.Workbook ExcelBook = ExcelApp.Workbooks.Add(System.Type.Missing);//创建工作表(即Excel里的子表sheet) 1表示在子表sheet1里进行数据导出Microsoft.Office.Interop.Excel.Worksheet ExcelSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelBook.Worksheets[1];//如果数据中存在数字类型 可以让它变文本格式显示ExcelSheet.Cells.NumberFormat = "@";//设置工作表名ExcelSheet.Name = title;//设置Sheet标题string start = "A1";string end = ChangeASC(DT.Columns.Count) + "1";Microsoft.Office.Interop.Excel.Range _Range = (Microsoft.Office.Interop.Excel.Range)ExcelSheet.get_Range(start, end);_Range.Merge(0);                     //单元格合并动作(要配合上面的get_Range()进行设计)_Range = (Microsoft.Office.Interop.Excel.Range)ExcelSheet.get_Range(start, end);_Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;_Range.Font.Size = 22; //设置字体大小_Range.Font.Name = "宋体"; //设置字体的种类 ExcelSheet.Cells[1, 1] = title;    //Excel单元格赋值_Range.EntireColumn.AutoFit(); //自动调整列宽//写表头for (int m = 1; m <= DT.Columns.Count; m++){ExcelSheet.Cells[2, m] = DT.Columns[m - 1].ColumnName.ToString();start = "A2";end = ChangeASC(DT.Columns.Count) + "2";_Range = (Microsoft.Office.Interop.Excel.Range)ExcelSheet.get_Range(start, end);_Range.Font.Size = 14; //设置字体大小_Range.Font.Name = "宋体"; //设置字体的种类  _Range.EntireColumn.AutoFit(); //自动调整列宽 _Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;}//写数据for (int i = 0; i < DT.Rows.Count; i++){for (int j = 1; j <= DT.Columns.Count; j++){//Excel单元格第一个从索引1开始// if (j == 0) j = 1;ExcelSheet.Cells[i + 3, j] = DT.Rows[i][j - 1].ToString();}}//表格属性设置for (int n = 0; n < DT.Rows.Count + 1; n++){start = "A" + (n + 3).ToString();end = ChangeASC(DT.Columns.Count) + (n + 3).ToString();//获取Excel多个单元格区域_Range = (Microsoft.Office.Interop.Excel.Range)ExcelSheet.get_Range(start, end);_Range.Font.Size = 12; //设置字体大小_Range.Font.Name = "宋体"; //设置字体的种类_Range.EntireColumn.AutoFit(); //自动调整列宽_Range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式 _Range.EntireColumn.AutoFit(); //自动调整列宽 }ExcelApp.DisplayAlerts = false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存 弹出保存对话框,并保存文件Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();sfd.DefaultExt = ".xlsx";sfd.Filter = "Office 2007 File|*.xlsx|Office 2000-2003 File|*.xls|所有文件|*.*";if (sfd.ShowDialog() == true){if (sfd.FileName != ""){ExcelBook.SaveAs(sfd.FileName);  //将其进行保存到指定的路径System.Windows.MessageBox.Show("导出文件已存储为: " + sfd.FileName, "温馨提示");}}//释放可能还没释放的进程ExcelBook.Close();ExcelApp.Quit();// PubHelper.Instance.KillAllExcel(ExcelApp);return sfd.FileName;}catch{//System.Windows.MessageBox.Show("导出文件保存失败,可能原因该文件已打开!", "警告!");return null;}}/// <summary>/// 获取当前列列名,并得到EXCEL中对应的列/// </summary>/// <param name="count"></param>/// <returns></returns>private string ChangeASC(int count){string ascstr = "";switch (count){case 1:ascstr = "A";break;case 2:ascstr = "B";break;case 3:ascstr = "C";break;case 4:ascstr = "D";break;case 5:ascstr = "E";break;case 6:ascstr = "F";break;case 7:ascstr = "G";break;case 8:ascstr = "H";break;case 9:ascstr = "I";break;case 10:ascstr = "J";break;case 11:ascstr = "K";break;case 12:ascstr = "L";break;case 13:ascstr = "M";break;case 14:ascstr = "N";break;case 15:ascstr = "O";break;case 16:ascstr = "P";break;case 17:ascstr = "Q";break;case 18:ascstr = "R";break;case 19:ascstr = "S";break;case 20:ascstr = "T";break;default:ascstr = "U";break;}return ascstr;}

需要的话可自行转换下表头。

WPF将DataGrid导出到Excel表格相关推荐

  1. 将数据库查询结果导出成Excel表格

    使用Java代码,从数据库中获取结果集,将结果集导出成Excel表格形式. 从数据库中查询学生表所有数据,将其导出成Excel表格,点击查看学生表表结构 . package com.test.test ...

  2. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  3. php怎么将表格导出到excel表格,php怎么将excel表格数据-php 怎么把数据导出到excel表格...

    如何使用php实现将数据从excel表导入到mysql中? /** * @param array $data //二维数组 不是对象 * @param string $filename //导件 */ ...

  4. python生成excel表格-Python实现将数据库一键导出为Excel表格的实例

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  5. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...

    php 怎么把数据导出到excel表格 php 把数据导出到excel表多种方法如使用 phpExcel 等,以下代码是直接通 header 生成 excel 文件的代码示例: header(&quo ...

  6. python如何读取数据并输出为表格_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  7. 查询php 输出表格,php输出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做......

    PHP如何将查询出来的数据导出成excel表格(最好做... php 把数据导出excel表格有多种方法,使用 phpExcel 等,以下代码接通过 header 生成 excel 文件的代码示例: ...

  8. DataGrid 导出到 Excel 的帮助类

    DataGrid 导出到 Excel 的帮助类 //========================================================================== ...

  9. arcmap导出地图快捷键_谷歌点坐标导出为excel表格

    谷歌点坐标导出为excel表格 1.将谷歌地图中的点坐标(文件夹)导出为kml格式文件,如图1-1.1-2. 图1-1 图1-2 2.在ArcMap 里打开Arctollbox下的"转换工具 ...

最新文章

  1. Python不用理解进程,线程实现多任务就是这么简单
  2. Handler消息机制(八):Handler内存泄漏的场景有哪些,如何避免
  3. 【转载】为何要十跪父母
  4. 第一阶段:Java基础之异常和处理
  5. 【Web应用-FTP】FTP 容量显示说明
  6. 苹果官宣春季发布会!不止有iPhone SE 3,还有紫色iPhone 13 Pro?
  7. win下常用快捷鍵及其作用
  8. 一步步教你轻松学主成分分析PCA降维算法
  9. 设计模式(八)桥接模式
  10. hping 详解_HPing3构造多种类型DDOS攻击使用详解
  11. 差分进化算法 matlab,差分进化算法之Matlab实现
  12. MATLAB 求导、符号计算
  13. android问卷调查论文设计,基于 android问卷调查app开发与设计.pdf
  14. ZigBee协调器和终端通信
  15. 通信工程cdma篇-网优网规基础
  16. Oracle如何导出存储过程
  17. 陈经纶2021年高考成绩查询时间,北京30余所高中2017年高考成绩汇总
  18. shell 小米system锁adb_忘记锁屏密码不用怕?支招小米手机解锁四种简单常用的方法...
  19. c语言基础题(笔记一)
  20. java枚举值转化中文_多个枚举的国际化(枚举值的转换)

热门文章

  1. MyBatis 大于小于不等于的写法
  2. kafka broker 进入 conflicted ephemeral node 死循环
  3. 云服务器可以用来做什么?
  4. Matlab入门基础详解
  5. java接口可以被继承吗
  6. 机器学习必备知识点 之 先验概率和后验概率
  7. 即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并打印出密码和原文。
  8. Android NFC手机的三种工作模式
  9. 不要再说Qt教程少了
  10. QT 系列博客:为什么要用QT?