大佬教程收集整理的这篇文章主要介绍了Silverlight 中将DataGrid中所有分页导出到Excel,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
做一个基于Silverlight的应用,主要是报表数据生成展示,还需要将报表数据导出,在网上找了一些资料,发现不能用,于是进行了改进,并加入了读取所有分页数据的功能。
以下为基础代码:
/// <sumMary> /// CSV字符串转换 /// </sumMary> /// <param name="data"></param> /// <returns></returns> private String FormatCSVField(String data) { return String.Format("{0}\t",data.replace("\"","\t\n")); } /// <sumMary> /// 导出到Excel /// </sumMary> /// <param name="dataPagerTemp">分页控件</param> /// <param name="dataGridTemp">数据表格控件</param> /// <returns></returns> private String ExportExcel(DataPager dataPagerTemp,DataGrid dataGridTemp) { String colPath; System.Reflection.PropertyInfo propInfo; System.Windows.Data.binding binding; System.Text.StringBuilder strBuilder = new System.Text.StringBuilder(); //加载Excel表头数据 List<String> headers = new List<String>(); for (int i = 0; i < dataGridTemp.columns.Count; ++i) { String strTemp = dataGridTemp.columns[i].Header.ToString(); headers.Add(FormatCSVField(strTemp)); } strBuilder .Append(String.Join("",headers.ToArray())) .Append("\t\n"); //内容 for (int i = 0; i < dataPagerTemp.PageCount; i++) { dataPagerTemp.pageIndex = i; foreach (Object m_Temp in dataGridTemp.Items@R_450_9016@E) { List<String> csvRow = new List<String>(); foreach (DataGridcolumn col in dataGridTemp.columns) { if (col is DataGridBoundcolumn) { binding = (col as DataGridBoundcolumn).binding; colPath = binding.Path.Path; String[] pathlist = colPath.Split('.'); object currentData = m_Temp; int count = 0; foreach (String item in pathlist) { propInfo = currentData.GetType().GetProperty(item); if (propInfo == null) break; count++; if (count == pathlist.Length) { csvRow.Add(FormatCSVField(propInfo.GetValue(currentData,null).ToString())); break; } else { currentData = propInfo.GetValue(currentData,@R_674_6633@ } } } } strBuilder .Append(String.Join("",csvRow.ToArray())) .Append("\t\n"); } } dataPagerTemp.pageIndex = 0; return strBuilder.ToString(); } /// <sumMary> /// 保存为Excel /// </sumMary> /// <param name="dataPagerTemp">分页控件</param> /// <param name="dataGridTemp">数据表格控件</param> private void SaveAsExcel(DataPager dataPagerTemp,DataGrid dataGridTemp) { String data = ExportExcel(dataPagerTemp,dataGridTemp); SaveFileDialog sfd = new SaveFileDialog() { DefaultExt = "xls",Filter = "Microsoft Office Excel(*.xls)|*.xls",FilterIndex = 1 }; if (sfd.ShowDialog() == truE) { using (Stream stream = sfd.openFile()) { using (StreamWriter writer = new StreamWriter(stream,System.Text.UnicodeEncoding.UnicodE)) { data = data.replace(",","/t"); writer.Write(data); writer.Close(); } stream.Close(); } } }
调用:
/// <sumMary> /// 导出报表 /// </sumMary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonExport_Click(object sender,RoutedEventArgs E) { SaveAsExcel(dataPagerReport,dataGridReport); }
以上是大佬教程为你收集整理的Silverlight 中将DataGrid中所有分页导出到Excel全部内容,希望文章能够帮你解决Silverlight 中将DataGrid中所有分页导出到Excel所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。