Silverlight 中将DataGrid中所有分页导出到Excel

Silverlight 中将DataGrid中所有分页导出到Excel,第1张

概述做一个基于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.ItemsSource)                {                    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,null);                                }                            }                        }                    }                    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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1022843.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存