#region Excel导出private void btnExportExcel_Click(object sender, RoutedEventArgs e){Export(this.dgvList, "XX信息查询列表");}public void Export(DataGrid dataGrid, string excelTitle){System.Data.DataTable dt = new System.Data.DataTable();for (int i = 0; i < dataGrid.Columns.Count; i++){if (dataGrid.Columns[i].Visibility == System.Windows.Visibility.Visible)//只导出可见列
                {dt.Columns.Add(dataGrid.Columns[i].Header.ToString());//构建表头
                }}for (int i = 0; i < dataGrid.Items.Count; i++){int columnsIndex = 0;System.Data.DataRow row = dt.NewRow();for (int j = 0; j < dataGrid.Columns.Count; j++){if (dataGrid.Columns[j].Visibility == System.Windows.Visibility.Visible){if (dataGrid.Items[i] != null && (dataGrid.Columns[j].GetCellContent(dataGrid.Items[i]) as TextBlock) != null)//填充可见列数据
                        {row[columnsIndex] = (dataGrid.Columns[j].GetCellContent(dataGrid.Items[i]) as TextBlock).Text.ToString();}else row[columnsIndex] = "";columnsIndex++;}}dt.Rows.Add(row);}string FileName = ExcelExport(dt, excelTitle);}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 = 18; //设置字体大小_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].ColumnName.ToString();start = "A2";end = ChangeASC(DT.Columns.Count) + "2";_Range = (Microsoft.Office.Interop.Excel.Range)ExcelSheet.get_Range(start, end);_Range.Font.Size = 13; //设置字体大小_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].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);  //将其进行保存到指定的路径GlobalVar.ShowMsgInfo("导出文件存储为: " + sfd.FileName);}}//释放可能还没释放的进程
                ExcelBook.Close();ExcelApp.Quit();PubHelper.Instance.KillAllExcel(ExcelApp);return sfd.FileName;}catch{GlobalVar.ShowMsgWarning("导出文件保存失败!");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 = "Y";break;default:ascstr = "U";break;}return ascstr;}#endregion

转载于:https://www.cnblogs.com/YYkun/p/7700702.html

WPF DataGrid 导出Excel相关推荐

  1. DataGrid导出Excel

    在Adobe的RIA开发环境下,flex并没有导出Excel的功能,在完成此类功能的时候,在网上Google了很多相关文章,其中提到了利用Flex将DataGrid的数据拼凑成字符串然后利用JSP获取 ...

  2. Easy UI DataGrid 导出Excel表格

    大体介绍一下,前后端完全分离.前端html5,后台用的asp.net的一般处理程序. 自己写了一个单独的js来实现报表的导出,因为客户对于报表的样式要求不是很高,所以做成这样基本够用了. 接下来贴代码 ...

  3. DataGrid 导出 EXCEL(简单,实用)

    Response.ContentEncoding =  // 有时用 gb2312 不能正常显示中文,要用 utf-8 System.Text.Encoding.GetEncoding("G ...

  4. WPF datagrid数据导出到Excel表格

    封装成类,供以后使用(将datagrid导出) using System; using System.Collections.Generic; using System.Linq; using Sys ...

  5. DataGrid 导出到 Excel 的帮助类

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

  6. asp.net中DataGrid利用RenderControl导出Excel的问题

    asp.net中DataGrid利用RenderControl导出Excel的问题 问题: "DataGridLinkButton"的控件"DataGrid1_ctl14 ...

  7. java datagrid导出excel_从datagridview中导出数据到excel

    第一种办法:直接在button的Click事件中写代码进行导出:private void button6_Click(object sender, EventArgs e) { SaveFileDia ...

  8. 【Vegas原创】导出Excel时,如何将数字格式转为文本格式?(07.12.13 Update)

    DataGrid: Asp.Net WebForm中DataGrid导出的时候,在ItemDataBound内  if(e.Item.ItemType == ListItemType.Item ||  ...

  9. .net 导出excel和word

    导出Word:     private   void   Button13_Click(object   sender,   System.EventArgs   e)     {     this. ...

  10. .NET 导出Excel

    ExportData类: View Code /// <summary>/// xxx/// 导出报表数据存入word或excel文件/// 2012-03-21/// </summ ...

最新文章

  1. element upload预览_vue+element上传图片并显示预览图
  2. 先验概率,后验概率,最大似然估计,最大后验概率
  3. hive整合ldap权限管理
  4. mysql binary like,在MySQL中为BINARY LIKE操作建立索引
  5. 无外网情况下RPM方式安装MySQL5.6
  6. Select和epoll的区别
  7. 【dede】列表页调用二三级导航栏
  8. php 获取服务器端口,PHP获取当前服务器详细信息
  9. 关于Android中开机启动服务
  10. 关于计算机的科学思维方法有哪些特点,数学一种科学思维方法有哪些
  11. python 组合优化 回撤最小_【研究】如何用python实现Markowitz投资组合优化
  12. 【现代密码学原理】——消息认证码(学习笔记)
  13. 《北京市自动驾驶车辆道路测试报告(2021年)》正式发布
  14. nrf52840烧录提示错误原因和解决办法
  15. IOS安全测试学习-DVIA-v2
  16. 线下商家卖货难、拓客难、引流难,不如学习一下怎么结合O2O电商
  17. android 高仿酷狗源码,项目源码--Android类似酷狗音乐播放器
  18. 【leetcode_easy_$】577. Employee Bonus
  19. sql server 里面的主要数据文件和次要数据文件有什么区别呢
  20. Win 10 打印机active directory域服务当前不可用解决方法

热门文章

  1. 《精通LabVIEW虚拟仪器程序设计与案例实现》一2.1 LabVIEW安装
  2. 【故障处理】CRS-1153错误处理
  3. Typecho - MyTagCloud标签云插件
  4. hdu3947 给一些已知(需费用)路径去覆盖一些边 //预先加灌法费用流
  5. 关于依赖倒置,控制反转和依赖注入的趣谈
  6. intellij 出现“Usage of API documented as @since 1.8+”的解决办法
  7. 收藏版: 深度介绍分布式系统原理
  8. 阿里架构师:​程序员必须掌握的几项核心能力
  9. 腾讯云分布式高可靠消息队列CMQ架构最佳实践
  10. 蚂蚁金服OceanBase“击败”甲骨文?呵呵!