C# 导出CSV 然后用excel打开,主要是用逗号来分割开每一列
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<DataAnalysisResultModel> list = this.DataContext as List<DataAnalysisResultModel>;
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;
}
}