Exemplo n.º 1
0
        /// <summary>
        /// 对绑定值进行转换
        /// </summary>
        /// <param name="strColumnValue"></param>
        /// <returns></returns>
        private static Binding GetColumnBinding(string strColumnValue)
        {
            Binding binding = new Binding();

            if (string.IsNullOrWhiteSpace(strColumnValue))
            {
                binding = new Binding(strColumnValue);
                return(binding);
            }

            string[] strlist = strColumnValue.Split(',');
            if (strlist.Length != 3)
            {
                binding = new Binding(strColumnValue);
                return(binding);
            }

            switch (strlist[2].ToString().ToUpper())
            {
            case "DICTIONARYCONVERTER":
                DictionaryConverter dic = new DictionaryConverter();
                binding = new Binding(strlist[0].ToString())
                {
                    Converter = dic, ConverterParameter = strlist[1].ToString()
                };
                break;

            case "CUSTOMDATECONVERTER":
                CustomDateConverter dat = new CustomDateConverter();
                binding = new Binding(strlist[0].ToString())
                {
                    Converter = dat, ConverterParameter = strlist[1].ToString()
                };
                break;
            }

            return(binding);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 对绑定值进行转换
        /// </summary>
        /// <param name="strColumnValue"></param>
        /// <returns></returns>
        private static Binding GetColumnBinding(string strColumnValue)
        {
            Binding binding = new Binding();
            if (string.IsNullOrWhiteSpace(strColumnValue))
            {
                binding = new Binding(strColumnValue);
                return binding;
            }

            string[] strlist = strColumnValue.Split(',');
            if (strlist.Length != 3)
            {
                binding = new Binding(strColumnValue);
                return binding;
            }

            switch (strlist[2].ToString().ToUpper())
            {
                case "DICTIONARYCONVERTER":
                    DictionaryConverter dic = new DictionaryConverter();
                    binding = new Binding(strlist[0].ToString()) { Converter = dic, ConverterParameter = strlist[1].ToString() };
                    break;
                case "CUSTOMDATECONVERTER":
                    CustomDateConverter dat = new CustomDateConverter();
                    binding = new Binding(strlist[0].ToString()) { Converter = dat, ConverterParameter = strlist[1].ToString() };
                    break;
            }

            return binding;
        }
Exemplo n.º 3
0
        //public static void Export2CSV(DataGrid dtGrid, IEnumerable ItemsSource,string fileName)
        //{
        //    string csvStr = ConverDataSet2CSV(dtGrid,ItemsSource);
        //    if(csvStr=="") return;
        //    FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
        //    //将string转换成byte[]
        //    byte[] csvArray = System.Text.Encoding.UTF8.GetBytes(csvStr.ToCharArray(), 0, csvStr.Length - 1);
        //    fs.Write(csvArray,0,csvStr.Length - 1);
        //    fs.Close();
        //    fs = null;
        //}

        ///// <summary>
        ///// 将指定的数据集中指定的表转换成CSV字符串
        ///// </summary>
        ///// <param name="dataGrid"></param>
        ///// <param name="tableName"></param>
        ///// <returns></returns>
        //private static string ConverDataSet2CSV(DataGrid dataGrid, IEnumerable ItemsSource)
        //{
        //    //首先判断数据集中是否包含指定的表
        //    if (dataGrid == null || dataGrid.ItemsSource==null)
        //    {
        //        MessageBox.Show("指定的数据集为空或不包含要写出的数据表!");
        //        return "";
        //    }
        //    string csvStr = "";
        //    //下面写出数据
        //    //DataTable tb = dataGrid.Tables[tableName];
        //    //写表名
        //    //csvStr += tb.TableName + "\n";
        //    //第一步:写出列名

        //    foreach (var column in dataGrid.Columns)
        //    {
        //        if(column is DataGridTextColumn)
        //        {
        //            DataGridTextColumn item=column as DataGridTextColumn;
        //            csvStr += "\""+column.Header.ToString() +"\"" +",";
        //        }
        //    }
        //    //去掉最后一个","
        //    csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
        //    csvStr += "\n";

        //    //第二步:写出数据
        //    foreach (var row in ItemsSource)
        //    {
        //        if(row is DateTime)
        //        {
        //            CustomDateConverter converter=new CustomDateConverter();
        //            converter.Convert(row,"DATE");
        //        }
        //        foreach (DataColumn column in tb.Columns)
        //        {
        //            csvStr += "\"" + row[column].ToString() + "\"" + ",";
        //        }
        //        csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
        //        csvStr += "\n";
        //    }
        //    return csvStr;
        //}

        #endregion


        /// <summary>
        /// 导出DataGrid数据到Excel
        /// </summary>
        /// <param name="withHeaders">是否需要表头</param>
        /// <param name="grid">DataGrid</param>
        /// <returns>Excel内容字符串</returns>
        public static string ExportDataGrid(bool withHeaders, DataGrid grid)
        {
            System.Reflection.PropertyInfo propInfo;
            System.Windows.Data.Binding    binding;
            var strBuilder = new System.Text.StringBuilder();
            DictionaryConverter dicConverter = new DictionaryConverter();
            var source = (grid.ItemsSource as System.Collections.IList);

            if (source == null)
            {
                return("");
            }
            var headers = new List <string>();

            grid.Columns.ForEach(col =>
            {
                if (col is DataGridBoundColumn)
                {
                    string strHeader = ConvertDic(col.Header.ToString());
                    headers.Add(FormatCsvField(strHeader));
                }
            });
            strBuilder.Append(String.Join(",", headers.ToArray())).Append("\r\n");
            foreach (Object data in source)
            {
                var csvRow = new List <string>();
                foreach (DataGridColumn col in grid.Columns)
                {
                    try
                    {
                        if (col is DataGridBoundColumn)
                        {
                            binding = (col as DataGridBoundColumn).Binding;
                            string   colPath     = binding.Path.Path;
                            string[] arr         = colPath.Split('.');
                            string   dicCategory = Convert.ToString(binding.ConverterParameter);//如有绑定字典值,则为字典类别
                            propInfo = data.GetType().GetProperty(colPath);
                            object ob = data;
                            if (arr.Length > 1)
                            {
                                ob       = data.GetObjValue(arr[0]);
                                propInfo = data.GetObjValue(arr[0]).GetType().GetProperty(arr[1]);
                            }
                            if (propInfo != null)
                            {
                                object obj = propInfo.GetValue(ob, null) == null ? null : propInfo.GetValue(ob, null).ToString();
                                obj = dicConverter.Convert(obj, null, dicCategory, null);
                                string value = Convert.ToString(obj);
                                csvRow.Add(FormatCsvField(value));
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                strBuilder.Append(String.Join(",", csvRow.ToArray())).Append("\r\n");
            }
            return(strBuilder.ToString());
        }
Exemplo n.º 4
0
        //public static void Export2CSV(DataGrid dtGrid, IEnumerable ItemsSource,string fileName)
        //{ 
        //    string csvStr = ConverDataSet2CSV(dtGrid,ItemsSource);
        //    if(csvStr=="") return;
        //    FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
        //    //将string转换成byte[]
        //    byte[] csvArray = System.Text.Encoding.UTF8.GetBytes(csvStr.ToCharArray(), 0, csvStr.Length - 1);
        //    fs.Write(csvArray,0,csvStr.Length - 1);
        //    fs.Close();
        //    fs = null;
        //}

        ///// <summary>
        ///// 将指定的数据集中指定的表转换成CSV字符串
        ///// </summary>
        ///// <param name="dataGrid"></param>
        ///// <param name="tableName"></param>
        ///// <returns></returns>
        //private static string ConverDataSet2CSV(DataGrid dataGrid, IEnumerable ItemsSource)
        //{
        //    //首先判断数据集中是否包含指定的表
        //    if (dataGrid == null || dataGrid.ItemsSource==null)
        //    {
        //        MessageBox.Show("指定的数据集为空或不包含要写出的数据表!");
        //        return "";
        //    }
        //    string csvStr = "";
        //    //下面写出数据
        //    //DataTable tb = dataGrid.Tables[tableName];
        //    //写表名
        //    //csvStr += tb.TableName + "\n";
        //    //第一步:写出列名
          
        //    foreach (var column in dataGrid.Columns)
        //    {
        //        if(column is DataGridTextColumn)
        //        {
        //            DataGridTextColumn item=column as DataGridTextColumn;
        //            csvStr += "\""+column.Header.ToString() +"\"" +",";
        //        }
        //    }
        //    //去掉最后一个","
        //    csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
        //    csvStr += "\n";
            
        //    //第二步:写出数据
        //    foreach (var row in ItemsSource)
        //    {
        //        if(row is DateTime)
        //        {
        //            CustomDateConverter converter=new CustomDateConverter();
        //            converter.Convert(row,"DATE");
        //        }
        //        foreach (DataColumn column in tb.Columns)
        //        {
        //            csvStr += "\"" + row[column].ToString() + "\"" + ",";
        //        }
        //        csvStr = csvStr.Remove(csvStr.LastIndexOf(","), 1);
        //        csvStr += "\n";
        //    }
        //    return csvStr;
        //}

        #endregion


        /// <summary>        
        /// 导出DataGrid数据到Excel        
        /// </summary>        
        /// <param name="withHeaders">是否需要表头</param>        
        /// <param name="grid">DataGrid</param>        
        /// <returns>Excel内容字符串</returns>        
        public static string ExportDataGrid(bool withHeaders, DataGrid grid)
        {
            System.Reflection.PropertyInfo propInfo;
            System.Windows.Data.Binding binding;
            var strBuilder = new System.Text.StringBuilder();
            DictionaryConverter dicConverter = new DictionaryConverter();
            var source = (grid.ItemsSource as System.Collections.IList);
            if (source == null) return "";
            var headers = new List<string>();
            grid.Columns.ForEach(col =>
            {
                if (col is DataGridBoundColumn)
                {
                    string strHeader = ConvertDic(col.Header.ToString());
                    headers.Add(FormatCsvField(strHeader));
                }
            });
            strBuilder.Append(String.Join(",", headers.ToArray())).Append("\r\n");
            foreach (Object data in source)
            {
                var csvRow = new List<string>();
                foreach (DataGridColumn col in grid.Columns)
                {
                    try
                    {
                        if (col is DataGridBoundColumn)
                        {
                            binding = (col as DataGridBoundColumn).Binding;
                            string colPath = binding.Path.Path;
                            string[] arr = colPath.Split('.');
                            string dicCategory = Convert.ToString(binding.ConverterParameter);//如有绑定字典值,则为字典类别
                            propInfo = data.GetType().GetProperty(colPath);
                            object ob = data;
                            if (arr.Length > 1)
                            {
                                ob = data.GetObjValue(arr[0]);
                                propInfo = data.GetObjValue(arr[0]).GetType().GetProperty(arr[1]);
                            }
                            if (propInfo != null)
                            {
                                object obj = propInfo.GetValue(ob, null) == null ? null : propInfo.GetValue(ob, null).ToString();
                                obj = dicConverter.Convert(obj, null, dicCategory, null);
                                string value = Convert.ToString(obj);
                                csvRow.Add(FormatCsvField(value));
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                strBuilder.Append(String.Join(",", csvRow.ToArray())).Append("\r\n");
            }
            return strBuilder.ToString();
        }