可导出CSV格式文件,用Excel打开;
/// <summary> /// CSV格式化 /// </summary> /// <param name="data">数据</param> /// <returns>格式化数据</returns> private static string FormatCsvField(string data) { return String.Format("\"{0}\"",data.Replace("\"","\"\"\"").Replace("\n","").Replace("\r","")); } /// <summary> /// 获取DataGrid数据,返回StringBuilder类型数据,用以生成CSV格式数据 /// </summary> /// <param name="withHeaders">是否需要表头</param> /// <param name="grid">DataGrid</param> /// <returns>Excel内容字符串</returns> private static string GetGridData(bool withHeaders,DataGrid grid) { System.Reflection.PropertyInfo propInfo; System.Windows.Data.Binding binding; var strBuilder = new System.Text.StringBuilder(); var source = grid.ItemsSource; if (source == null) return ""; var headers = new List<string>(); try { if (grid.Columns.Count == 0) { return null; } grid.Columns.ToList().ForEach(col => { if (col is DataGridBoundColumn) { headers.Add(FormatCsvField(col.Header.ToString())); } }); 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) { if (col is DataGridBoundColumn) { binding = (col as DataGridBoundColumn).Binding; string colPath = binding.Path.Path; propInfo = data.GetType().GetProperty(colPath); if (propInfo != null) { csvRow.Add(FormatCsvField(propInfo.GetValue(data,null).ToString())); } } } strBuilder.Append(String.Join(",csvRow.ToArray())).Append("\r\n"); } return strBuilder.ToString(); } catch { return null; } } /// <summary> /// 导出Excel /// </summary> public void ExportGridToExcel() { try { string data = GetGridData(true,StatisticsDetail); if (string.IsNullOrEmpty(data)) return; SaveFileDialog sfd = new SaveFileDialog { DefaultExt = "csv",Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*",FilterIndex = 1 }; if (sfd.ShowDialog() == true) { using (Stream stream = sfd.OpenFile()) { using (var writer = new StreamWriter(stream,System.Text.Encoding.Unicode)) { data = data.Replace(","\t"); writer.Write(data); writer.Close(); } stream.Close(); MessageBox.Show("导出成功!"); } } } catch { } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。