
首先新建一个DataGrdIExtensions类,代码为:
public static class DataGrIDExtensions { /// <summary> /// 导出dg中数据,成功返回true,失败返回false /// </summary> /// <param name="dg"></param> /// <returns></returns> public static bool Export(this DataGrID dg) { return ExportDataGrID(dg); } /// <summary> /// 导出dGrID中数据,成功返回true,失败返回false /// </summary> /// <param name="dGrID"></param> /// <returns></returns> public static bool ExportDataGrID(DataGrID dGrID) { bool exportOK = false; #region 导出数据 try { SavefileDialog obJsFD = new SavefileDialog() { DefaultExt = "csv",Filter = "CSV files (*.csv)|*.csv|Excel XML (*.xml)|*.xml|All files (*.*)|*.*",FilterIndex = 1 }; if (obJsFD.ShowDialog() == true) { string strFormat = obJsFD.Safefilename.Substring(obJsFD.Safefilename.IndexOf('.') + 1).toupper(); StringBuilder strBuilder = new StringBuilder(); if (dGrID.ItemsSource == null) return false; List<string> lstFIElds = new List<string>(); if (dGrID.headersVisibility == DataGrIDheadersVisibility.Column || dGrID.headersVisibility == DataGrIDheadersVisibility.All) { foreach (DataGrIDColumn dgcol in dGrID.Columns) lstFIElds.Add(FormatFIEld(dgcol.header.ToString(),strFormat)); BuildStringOfRow(strBuilder,lstFIElds,strFormat); } foreach (object data in dGrID.ItemsSource) { lstFIElds.Clear(); foreach (DataGrIDColumn col in dGrID.Columns) { string strValue = ""; Binding objBinding = null; if (col is DataGrIDBoundColumn) objBinding = (col as DataGrIDBoundColumn).Binding; if (col is DataGrIDTemplateColumn) { //This is a template column... let us see the underlying dependency object DependencyObject objDO = (col as DataGrIDTemplateColumn).CellTemplate.LoadContent(); FrameworkElement oFE = (FrameworkElement)objDO; FIEldInfo oFI = 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 != "") { PropertyInfo pi = 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(); else strValue = objBinding.Converter.Convert(data,objBinding.ConverterCulture).ToString(); } } lstFIElds.Add(FormatFIEld(strValue,strFormat)); } BuildStringOfRow(strBuilder,strFormat); } StreamWriter sw = new StreamWriter(obJsFD.Openfile(),System.Text.EnCoding.Unicode); if (strFormat == "XML") { //Let us write the headers for the Excel XML sw.Writeline("<?xml version=\"1.0\" enCoding=\"utf-8\"?>"); sw.Writeline("<?mso-application progID=\"Excel.Sheet\"?>"); sw.Writeline("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\">"); sw.Writeline("<documentPropertIEs xmlns=\"urn:schemas-microsoft-com:office:office\">"); sw.Writeline("<Author>arasu Elango</Author>"); sw.Writeline("<Created>" + DateTime.Now.TolocalTime().TolongDateString() + "</Created>"); sw.Writeline("<LastSaved>" + DateTime.Now.TolocalTime().TolongDateString() + "</LastSaved>"); sw.Writeline("<Company>Atom8 IT Solutions (P) Ltd.,</Company>"); sw.Writeline("<Version>12.00</Version>"); sw.Writeline("</documentPropertIEs>"); sw.Writeline("<Worksheet ss:name=\"Silverlight Export\" 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(); exportOK = true; } } catch (Exception ex) { exportOK = false; MessageBox.Show("保存失败:"+ex.Message); } #endregion return exportOK; } /// <summary> /// 设置datagrID中每一行的数据内容 /// </summary> /// <param name="strBuilder"></param> /// <param name="lstFIElds"></param> /// <param name="strFormat"></param> private static voID BuildStringOfRow(StringBuilder strBuilder,List<string> lstFIElds,string strFormat) { switch (strFormat) { case "XML": strBuilder.Appendline("<Row>"); strBuilder.Appendline(String.Join("\r\n",lstFIElds.ToArray())); strBuilder.Appendline("</Row>"); break; case "CSV": strBuilder.Appendline(String.Join("\t",lstFIElds.ToArray())); break; } } /// <summary> /// 设置字符串输出格式 /// </summary> /// <param name="data"></param> /// <param name="format"></param> /// <returns></returns> private static string FormatFIEld(string data,string format) { switch (format) { case "XML": return String.Format("<Cell><Data ss:Type=\"String\">{0}</Data></Cell>",data); case "CSV": return String.Format("\"{0}\"",data.Replace("\"","\"\"\"").Replace("\n","").Replace("\r","")); } return data; } }导出数据时,只需要调用方法:datagrID.Export()即可 总结 以上是内存溢出为你收集整理的silverlight中datagrid数据到处excel全部内容,希望文章能够帮你解决silverlight中datagrid数据到处excel所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)