silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 中将DataGrid中所有分页导出到Excel大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

做一个基于Silverlight的应用,主要是报表数据生成展示,还需要将报表数据导出,在网上找了一些资料,发现不能用,于是进行了改进,并加入了读取所有分页数据的功能。 以下为基础代码:   /// <sumMary> /// CSV字符串转换 /// </sumMary> /// <param name="data"></par

一个基于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,请注明来意。