128 lines
3.9 KiB
C#
128 lines
3.9 KiB
C#
|
|
using FujianEarthquake.Models;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Collections.ObjectModel;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using System.Windows.Media;
|
|||
|
|
|
|||
|
|
namespace FujianEarthquake.Common
|
|||
|
|
{
|
|||
|
|
public class CSVDownload
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Create target file
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="folder">folder</param>
|
|||
|
|
/// <param name="fileName">folder name</param>
|
|||
|
|
/// <param name="fileExtension">file extension</param>
|
|||
|
|
/// <returns>file path</returns>
|
|||
|
|
public static string CreateFile(string folder, string fileName, string fileExtension)
|
|||
|
|
{
|
|||
|
|
FileStream fs = null;
|
|||
|
|
string filePath = folder + fileName + "." + fileExtension;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (!Directory.Exists(folder))
|
|||
|
|
{
|
|||
|
|
Directory.CreateDirectory(folder);
|
|||
|
|
}
|
|||
|
|
fs = File.Create(filePath);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{ }
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
if (fs != null)
|
|||
|
|
{
|
|||
|
|
fs.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return filePath;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#region LogRecord
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取类的属性集合(以便生成CSV文件的所有Column标题)
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static PropertyInfo[] GetLogRecordPropertyInfoArray()
|
|||
|
|
{
|
|||
|
|
PropertyInfo[] props = null;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
Type type = typeof(LogRecordModel);
|
|||
|
|
object obj = Activator.CreateInstance(type);
|
|||
|
|
props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{ }
|
|||
|
|
return props;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Save the List data to CSV file
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="BaseStationList">data source</param>
|
|||
|
|
/// <param name="filePath">file path</param>
|
|||
|
|
/// <returns>success flag</returns>
|
|||
|
|
public static bool SaveLogRecordDataToCSVFile(ObservableCollection<LogRecordModel> LogRecordList, string filePath)
|
|||
|
|
{
|
|||
|
|
bool successFlag = true;
|
|||
|
|
|
|||
|
|
StringBuilder strColumn = new StringBuilder();
|
|||
|
|
StringBuilder strValue = new StringBuilder();
|
|||
|
|
StreamWriter sw = null;
|
|||
|
|
PropertyInfo[] props = GetLogRecordPropertyInfoArray();
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
sw = new StreamWriter(filePath);
|
|||
|
|
for (int i = 0; i < props.Length; i++)
|
|||
|
|
{
|
|||
|
|
strColumn.Append(props[i].Name);
|
|||
|
|
strColumn.Append(",");
|
|||
|
|
}
|
|||
|
|
strColumn.Remove(strColumn.Length - 1, 1);
|
|||
|
|
sw.WriteLine(strColumn); //write the column name
|
|||
|
|
|
|||
|
|
for (int i = 0; i < LogRecordList.Count; i++)
|
|||
|
|
{
|
|||
|
|
strValue.Remove(0, strValue.Length); //clear the temp row value
|
|||
|
|
strValue.Append(LogRecordList[i].Index);
|
|||
|
|
strValue.Append(",");
|
|||
|
|
strValue.Append(LogRecordList[i].RecordTime);
|
|||
|
|
strValue.Append(",");
|
|||
|
|
strValue.Append(LogRecordList[i].Device_Name);
|
|||
|
|
strValue.Append(",");
|
|||
|
|
strValue.Append(LogRecordList[i].Operation_Type);
|
|||
|
|
strValue.Append(",");
|
|||
|
|
strValue.Append(LogRecordList[i].Record);
|
|||
|
|
|
|||
|
|
sw.WriteLine(strValue); //write the row value
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
successFlag = false;
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
if (sw != null)
|
|||
|
|
{
|
|||
|
|
sw.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return successFlag;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|