private void ExportFileToCsv() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "*.csv"; saveFileDialog.AddExtension = true; saveFileDialog.Filter = "csv files|*.csv"; saveFileDialog.OverwritePrompt = true; saveFileDialog.CheckPathExists = true; saveFileDialog.FileName = "AnalysisData";
if (saveFileDialog.ShowDialog() == true && saveFileDialog.FileName != null) //打开保存文件对话框 { string fileName = saveFileDialog.FileName;//文件名字 using (StreamWriter streamWriter = new StreamWriter(fileName, false, Encoding.Default)) { StringBuilder sb = new StringBuilder(); sb.Append(" StartTime ").Append(","); //没一个字段后面都加逗号,表示是一列,因为这是第一行 因此也是列标题 sb.Append(" TraceStart ").Append(","); sb.Append(" TraceEnd ").Append(","); sb.Append(" Duration ").Append(","); sb.Append(" Operation ").Append(","); sb.Append(" ColorVal ").Append(","); sb.Append(" Object ").Append(","); sb.Append(" Resource ").Append(","); sb.Append(" TargetResource "); streamWriter.WriteLine(sb.ToString());
//要写的数据源
List<data> list = this.DataContext as List<data>; double taskTime = 0 ; foreach (DataAnalysisResultModel model in list) { taskTime = model.TaskTime; sb = new StringBuilder(); sb.Append(StringUtil.ReplaceSpecialChars(model.StartTime + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.TraceStart + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.TraceEnd + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.Duration + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.Operation + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.ColorVal + "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.Object != null ? model.Object + "" : "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.Resource != null ? model.Resource + "" : "")).Append(","); sb.Append(StringUtil.ReplaceSpecialChars(model.TargetResource != null ? model.TargetResource + "" : "")); streamWriter.WriteLine(sb.ToString()); }
sb = new StringBuilder(); sb.Append("Trace time:") .Append(taskTime+""); streamWriter.WriteLine(""); streamWriter.WriteLine(""); streamWriter.WriteLine(sb.ToString());
streamWriter.Flush(); streamWriter.Close(); } }
}
public class StringUtil {
/// <summary> /// 替换特殊字符 /// </summary> /// <param name="input">字符串</param> /// <returns></returns> public static string ReplaceSpecialChars(string input) { // space -> _x0020_ 特殊字符的替换 // % -> _x0025_ // # -> _x0023_ // & -> _x0026_ // / -> _x002F_ if (input == null) return ""; input = input.Replace(" ", "_x0020_") .Replace("%", "_x0025_") .Replace("#", "_x0023_") .Replace("&", "_x0026_") .Replace("/", "_x002F_"); return input; } }
C# 导出CSV 然后用excel打开,主要是用逗号来分割开每一列