热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wpf导出Excel

1privatevoidButton_Click_1(objectsender,RoutedEventArgse)2{34ExportDataGridSaveAs(true,thi

 

1 private void Button_Click_1(object sender, RoutedEventArgs e)
2 {
3
4 ExportDataGridSaveAs(true, this.data);
5 }
6 #region wpf客户端 导出DataGrid数据到Excel
7
8 ///


9 /// CSV格式化
10 ///

11 /// 数据
12 /// 格式化数据
13 private static string FormatCsvField(string data)
14 {
15 return String.Format("\"{0}\"", data.Replace("\"", "\"\"\"").Replace("\n", "").Replace("\r", ""));
16 }
17
18
19
20 ///
21 /// 导出DataGrid数据到Excel
22 ///

23 /// 是否需要表头
24 /// DataGrid
25 ///
26 /// Excel内容字符串
27 public static string ExportDataGrid(bool withHeaders, System.Windows.Controls.DataGrid grid, bool dataBind)
28 {
29 try
30 {
31 var strBuilder = new System.Text.StringBuilder();
32 var source = (grid.ItemsSource as System.Collections.IList);
33 if (source == null) return "";
34 var headers &#61; new List<string>();
35 List<string> bt &#61; new List<string>();
36
37 foreach (var hr in grid.Columns)
38 {
39 // DataGridTextColumn textcol &#61; hr. as DataGridTextColumn;
40 headers.Add(hr.Header.ToString());
41 if (hr is DataGridTextColumn)//列绑定数据
42 {
43 DataGridTextColumn textcol &#61; hr as DataGridTextColumn;
44 if (textcol !&#61; null)
45 bt.Add((textcol.Binding as Binding).Path.Path.ToString()); //获取绑定源
46
47 }
48 else if (hr is DataGridTemplateColumn)
49 {
50 if (hr.Header.Equals("操作"))
51 bt.Add("Id");
52 }
53 else
54 {
55
56 }
57 }
58 strBuilder.Append(String.Join(",", headers.ToArray())).Append("\r\n");
59 foreach (var data in source)
60 {
61 var csvRow &#61; new List<string>();
62 foreach (var ab in bt)
63 {
64 string s &#61; ReflectionUtil.GetProperty(data, ab).ToString();
65 if (s !&#61; null)
66 {
67 csvRow.Add(FormatCsvField(s));
68 }
69 else
70 {
71 csvRow.Add("\t");
72 }
73 }
74 strBuilder.Append(String.Join(",", csvRow.ToArray())).Append("\r\n");
75 // strBuilder.Append(String.Join(",", csvRow.ToArray())).Append("\t");
76 }
77 return strBuilder.ToString();
78 }
79 catch (Exception ex)
80 {
81 // LogHelper.Error(ex);
82 return "";
83 }
84 }
85 public class ReflectionUtil
86 {
87 public static object GetProperty(object obj, string propertyName)
88 {
89 PropertyInfo info &#61; obj.GetType().GetProperty(propertyName);
90 if (info &#61;&#61; null && propertyName.Split(&#39;.&#39;).Count() > 0)
91 {
92 object o &#61; ReflectionUtil.GetProperty(obj, propertyName.Split(&#39;.&#39;)[0]);
93 int index &#61; propertyName.IndexOf(&#39;.&#39;);
94 string end &#61; propertyName.Substring(index &#43; 1, propertyName.Length - index - 1);
95 return ReflectionUtil.GetProperty(o, end);
96 }
97 object result &#61; null;
98 try
99 {
100 result &#61; info.GetValue(obj, null);
101 }
102 catch (TargetException)
103 {
104 return "";
105 }
106 return result &#61;&#61; null ? "" : result;
107 }
108 }
109 ///
110 /// 导出DataGrid数据到Excel为CVS文件
111 /// 使用utf8编码 中文是乱码 改用Unicode编码
112 ///
113 ///

114 /// 是否带列头
115 /// DataGrid
116 public static void ExportDataGridSaveAs(bool withHeaders, System.Windows.Controls.DataGrid grid)
117 {
118 try
119 {
120 string data &#61; ExportDataGrid(true, grid, true);
121 var sfd &#61; new Microsoft.Win32.SaveFileDialog
122 {
123 DefaultExt &#61; "csv",
124 Filter &#61; "CSV Files (*.csv)|*.csv|All files (*.*)|*.*",
125 FilterIndex &#61; 1
126 };
127 if (sfd.ShowDialog() &#61;&#61; true)
128 {
129 using (Stream stream &#61; sfd.OpenFile())
130 {
131 using (var writer &#61; new StreamWriter(stream, System.Text.Encoding.Unicode))
132 {
133 data &#61; data.Replace(",", "\t");
134 writer.Write(data);
135 writer.Close();
136 }
137 stream.Close();
138 }
139 }
140 MessageBox.Show("导出成功&#xff01;");
141 }
142 catch (Exception ex)
143 {
144 // LogHelper.Error(ex);
145 }
146 }
147
148 #endregion 导出DataGrid数据到Excel
149
150

 找了好多都有问题&#xff0c;这个可以分享给到家

转自&#xff1a;https://www.cnblogs.com/kmust/p/4412228.html

转:https://www.cnblogs.com/pu-tao-zi/p/wpf.html



推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • pythonMatplotlib(二)
    Matplotlib+pandas作图一、对csv文件进行提取ruixi.csv对上述表格进行提取并做图画出图像二、对.xlsx进行提取:rui ... [详细]
author-avatar
呦呦嘉宾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有