wpf导出excel出现问题

问题描述

导出之后郁闷了.好多的问题,求指教usingSystem;usingSystem.Windows;usingSystem.Windows.Data;usingSystem.Windows.Media;usingSystem.Windows.Controls;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Collections.ObjectModel;usingSystem.Linq;usingSystem.Text;usingSystem.IO;usingSystem.Reflection;usingSystem.Xml.Linq;usingMicrosoft.Win32;usingAspose.Cells;usingSystem.Data;classDataGridExtensions{publicvoidExport(DataGriddg){DataGridExtensionsda=newDataGridExtensions();da.ExportDataGrid(dg);}publicvoidExportDataGrid(DataGriddGrid){SaveFileDialogobjSFD=newSaveFileDialog(){DefaultExt="csv",Filter="CSVFiles(*.csv)|*.csv|ExcelXML(*.xmls)|*.xml|Allfiles(*.*)|*.*",FilterIndex=1};if(objSFD.ShowDialog()==true){stringstrFormat=objSFD.SafeFileName.Substring(objSFD.SafeFileName.IndexOf('.')+1).ToUpper();StringBuilderstrBuilder=newStringBuilder();if(dGrid.ItemsSource==null)return;List<string>lstFields=newList<string>();if(dGrid.HeadersVisibility==DataGridHeadersVisibility.Column||dGrid.HeadersVisibility==DataGridHeadersVisibility.All){/*for(inti=1;i<dGrid.Columns.Count();i++){lstFields.Add(FormatField(dGrid.Columns[i].Header.ToString(),strFormat));BuildStringOfRow(strBuilder,lstFields,strFormat);BuildStringOfRow(strBuilder,lstFields,strFormat);}*/foreach(DataGridColumndgcolindGrid.Columns){if(dgcol.Header==null){}else{lstFields.Add(FormatField(dgcol.Header.ToString(),strFormat));BuildStringOfRow(strBuilder,lstFields,strFormat);BuildStringOfRow(strBuilder,lstFields,strFormat);}}for(intj=2;j<dGrid.Items.Count-1;j++){objectdata=dGrid.Items[j];lstFields.Clear();foreach(DataGridColumncolindGrid.Columns){stringstrValue="";BindingobjBinding=null;if(colisDataGridBoundColumn)objBinding=(Binding)(colasDataGridBoundColumn).Binding;if(colisDataGridTemplateColumn){//Thisisatemplatecolumn...letusseetheunderlyingdependencyobjectDependencyObjectobjDO=(colasDataGridTemplateColumn).CellTemplate.LoadContent();FrameworkElementoFE=(FrameworkElement)objDO;FieldInfooFI=oFE.GetType().GetField("TextProperty");if(oFI!=null){if(oFI.GetValue(null)!=null){if(oFE.GetBindingExpression((DependencyProperty)oFI.GetValue(null))!=null)objBinding=oFE.GetBindingExpression((DependencyProperty)oFI.GetValue(null)).ParentBinding;}}}if(objBinding!=null){if(objBinding.Path.Path!=""){PropertyInfopi=data.GetType().GetProperty(objBinding.Path.Path);if(pi!=null)strValue=pi.GetValue(data,null).ToString();}if(objBinding.Converter!=null){if(strValue!="")strValue=objBinding.Converter.Convert(strValue,typeof(string),objBinding.ConverterParameter,objBinding.ConverterCulture).ToString();elsestrValue=objBinding.Converter.Convert(data,typeof(string),objBinding.ConverterParameter,objBinding.ConverterCulture).ToString();}}lstFields.Add(FormatField(strValue,strFormat));}BuildStringOfRow(strBuilder,lstFields,strFormat);}StreamWritersw=newStreamWriter(objSFD.OpenFile());if(strFormat=="XML"){//LetuswritetheheadersfortheExcelXMLsw.WriteLine("<?xmlversion="1.0"encoding="utf-8"?>");sw.WriteLine("<?mso-applicationprogid="Excel.Sheet"?>");sw.WriteLine("<Workbookxmlns="urn:schemas-microsoft-com:office:spreadsheet">");sw.WriteLine("<DocumentPropertiesxmlns="urn:schemas-microsoft-com:office:office">");sw.WriteLine("<Author>ArasuElango</Author>");sw.WriteLine("<Created>"+DateTime.Now.ToLocalTime().ToLongDateString()+"</Created>");sw.WriteLine("<LastSaved>"+DateTime.Now.ToLocalTime().ToLongDateString()+"</LastSaved>");sw.WriteLine("<Company>Atom8ITSolutions(P)Ltd.,</Company>");sw.WriteLine("<Version>12.00</Version>");sw.WriteLine("</DocumentProperties>");sw.WriteLine("<Worksheetss:Name="SilverlightExport"xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">");sw.WriteLine("<Table>");}sw.Write(strBuilder.ToString());if(strFormat=="XML"){sw.WriteLine("</Table>");sw.WriteLine("</Worksheet>");sw.WriteLine("</Workbook>");}sw.Close();if(MessageBox.Show("数据成功导出,文件目录是:"+objSFD.ToString()+";是否立即查看")==MessageBoxResult.OK){};}else{return;}}}privatevoidBuildStringOfRow(StringBuilderstrBuilder,List<string>lstFields,stringstrFormat){switch(strFormat){case"XML":strBuilder.AppendLine("<Row>");strBuilder.AppendLine(String.Join("rn",lstFields.ToArray()));strBuilder.AppendLine("</Row>");break;case"CSV":strBuilder.AppendLine(String.Join(",",lstFields.ToArray()));break;}}privatestringFormatField(stringdata,stringformat){switch(format){case"XML":returnString.Format("<Cell><Datass:Type="String">{0}</Data></Cell>",data);case"CSV":returnString.Format(""{0}"",data.Replace(""",""""").Replace("n","").Replace("r",""));}returndata;}}

解决方案

解决方案二:
一楼,这个,我导出的时候会循环head,然后给导出,内容没有导出
解决方案三:

解决方案四:
我这边没有用datatable,怎么把datagrid转成datatable呢

时间: 2024-09-22 20:04:04

wpf导出excel出现问题的相关文章

一起谈.NET技术,Silverlight 4中把DataGrid数据导出Excel—附源码下载

Silverlight中常常用到DataGrid来展示密集数据. 而常见应用系统中我们需要把这些数据导入导出到固定Office套件中例如常用的Excel表格. 那么在Silverlight 中如何加以实现? 在参考大量资料后 提供参考思路如下: A:纯客户端导出处理.利用Silverlight 与Javascript 进行交互实现导出Excel. B:服务器端导出.获得DataGrid数据源. 传递给WCF Service到服务器端. 然后把传回数据通过Asp.net中通用处理导出Excel方法

JAVA导出EXCEL并下载

JAVA导出EXCEL并下载 一 ,流程大致如下 1.JSP页面点击按钮 2.点击导出excel按钮 3.点击确定按钮 (1)在谷歌浏览器中会直接下载 (2)在ie浏览器会提示保存路径 4.最后下载保存到本地,打开Excel表格,效果如下. 二,下面来看具体代码 前端js代码 function exportExcel() { $.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) { if (r) { var startTime =

实战篇-通用的页面列表导出Excel控件

首先,先上下图片,好理解一下今天要讲内容:   第一张图:   第二张图:   说明: 在很多系统中,或者是一些网站的后台,包括秋色园的后台,通过都会有一些相同的工具栏目,比如上面的"导出"按钮,由于分布在系统大量的列表中, 因此,如何以最简洁快速的方式实现这种功能,节省开发时间,就是今天以下要介绍的内容了.   接着我们再看一下点击"导出"按钮时出现的导出功能:   打开导出的Excel: 说明: 从以上四张图片中,所要说明的问题是: "导出"

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select

Web应用导出Excel报表的简单实现(HTML)

excel|web|导出excel Web应用导出Excel报表的简单实现      在Web应用中,很多数据经常要导出成Excel文档.用专门的生成真正的Excel文档的方式比较复杂,不太好用.所以经常用一种简单的方式来实现,即将报表保存为HTML格式,然后用Excel打开. 实现方式:    第一步,用JSP实现HTML版本的报表    第二步,在该JSP页面头部设置response的ContentType为Excel格式            <% response.setContentT

精彩:ASP导出Excel数据的四种方法

excel|导出excel|数据 一.使用OWC 什么是OWC? OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制.在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境.这种模式下,客户端工作站将在整个任务中分担很大的比重. <%Option Explic

asp.net里导出excel表方法汇总

asp.net|excel|导出excel 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Di

ASP导出Excel数据的四种方法

excel|导出excel|数据 一.使用OWC 什么是OWC? OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制.在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境.这种模式下,客户端工作站将在整个任务中分担很大的比重. <%Option Explic

php excel reader2.21导出excel中文乱码解决方法说明

之前我的PHP教程博客访友询问使用php excel reader2.21导出excel时中文出现乱码如何解决,现我说明下php excel reader导出excel中文乱码的解决方法,希望对使用php excel reader导出excel的朋友有所帮助. php excel reader介绍 php excel reader是一个读取Excel xsl文件内容的一个php excel类,目前最新版本是php excel reader2.21,网上可自行搜索,sourceforge上的php